PyMuPDF 被 MuPDF 包裹
它有许多强大的 pdf 操作选项,包括设置页面比例和页面图像输出分辨率的能力。
但是 MuPDF 确实支持 Tiff 输入但不原生导出到单页或多页 Tiff,因此需要从多个原生 PNG 进行额外转换。
当前inputs and outputs的范围
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。
所以代码 sn-p 可能如下所示:
import fitz
mat = fitz.Matrix(300 / 72, 300 / 72) # sets zoom factor for 300 dpi
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 支持在一个文件中包含多个图像。