PyMUPDF - 如何将 PDF 转换为图像,使用图像大小的原始文档设置并设置为 300dpi?
PyMUPDF - How to convert PDF to image, using the original document settings for the image size and set to 300dpi?
我目前正在考虑使用 python 包 PyMuPDF 作为将 PDF 转换为图像(在我的例子中是 .TIFF 文件)的工作流程。
我正在尝试模仿我目前用于 PDF -> 图像转换的另一个程序的行为。在该程序中,它允许您设置成像设置,如下所示:
图像输出质量 (DPI):(默认为 300dpi)
基本图像尺寸:原始设置 - 使用原始文档设置渲染图像。
我的问题是,这在 PyMuPDF 中可能吗?如何将图像的输出 DPI 设置为 300 并将图像大小设置为原始文档大小?我对处理 PDF's/images 的这种处理还很陌生,所以非常感谢任何帮助。
提前致谢,
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 中问过这个问题,为了其他人的利益,答案是
Sounds like you will create a so-called "pixmap" for each page and save that as an image.
PyMuPDF itself only support a handful of image output formats, the most popular being PNG, others are the PNM-type images.
If you want to use others, you must use an additional package, presumably PIL/Pillow.
PyMuPDF supports Pillow directly via its pixmap output methods.
So a code snippet may look like this:
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)
For more sophistication on PIL output, please consult their documentation. For example, TIFF supports multiple images in one file.
我目前正在考虑使用 python 包 PyMuPDF 作为将 PDF 转换为图像(在我的例子中是 .TIFF 文件)的工作流程。
我正在尝试模仿我目前用于 PDF -> 图像转换的另一个程序的行为。在该程序中,它允许您设置成像设置,如下所示:
图像输出质量 (DPI):(默认为 300dpi)
基本图像尺寸:原始设置 - 使用原始文档设置渲染图像。
我的问题是,这在 PyMuPDF 中可能吗?如何将图像的输出 DPI 设置为 300 并将图像大小设置为原始文档大小?我对处理 PDF's/images 的这种处理还很陌生,所以非常感谢任何帮助。
提前致谢,
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/Pillowfrom 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 中问过这个问题,为了其他人的利益,答案是
Sounds like you will create a so-called "pixmap" for each page and save that as an image. PyMuPDF itself only support a handful of image output formats, the most popular being PNG, others are the PNM-type images. If you want to use others, you must use an additional package, presumably PIL/Pillow. PyMuPDF supports Pillow directly via its pixmap output methods. So a code snippet may look like this:
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)
For more sophistication on PIL output, please consult their documentation. For example, TIFF supports multiple images in one file.