PyMuPDF是基于MuPDF封装的。
它具有许多强大的PDF操作选项,包括设置页面比例和页面图像输出的分辨率等。
不过,MuPDF支持Tiff格式的输入,但不支持原生地将单个或多个页面导出为Tiff格式,因此需要通过其他方式进行转换,例如从多个PNG文件进行转换。
目前支持的输入和输出格式有多种。
Input Output Description
JPEG - Joint Photographic Experts Group
BMP - Windows Bitmap
JXR - JPEG Extended Range
JPX - JPEG 2000
GIF - Graphics Interchange Format
TIFF - Tagged Image File Format
PNG PNG Portable Network Graphics
PNM PNM Portable Anymap
PGM PGM Portable Graymap
PBM PBM Portable Bitmap
PPM PPM Portable Pixmap
PAM PAM Portable Arbitrary Map
- PSD Adobe Photoshop Document
- PS Adobe Postscript
要将文件导出为tiff格式,您需要使用类似于PIL/Pillow的工具。
from PIL import Image
import fitz
pix = fitz.Pixmap(...)
img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
img.save("output.tif", "TIFF")
然而,如果要存储单页到多页,您需要尝试使用PILlow设置。
[更新]
我看到您在PyMuPDF中提出了这个问题,为了其他人的利益,答案是:
听起来你将为每个页面创建一个所谓的“像素图”,并将其保存为图像。
PyMuPDF本身仅支持少量图像输出格式,其中最流行的是PNG,其他格式是PNM类型的图像。
如果您想使用其他格式,则必须使用附加包,可能是PIL/Pillow。
PyMuPDF通过其像素图输出方法直接支持Pillow。
因此,代码片段可能类似于:
import fitz
mat = fitz.Matrix(300 / 72, 300 / 72)
doc = fitz.open("yourfile.pdf")
for page in doc:
pix = page.get_pixmap(matrix=mat)
img_filename = "page-%04i.tiff" % page.number
pix.pil_save(img_filename, format="TIFF", dpi=(300,300), ... more PIL parameters)
更多有关PIL输出的细节,请参考他们的文档。例如,TIFF支持在一个文件中包含多个图像。