我的目标是从PDF文件中获取具有透明背景的PNG文件。
convert
工具可以完成这项工作:
$ convert test.pdf test.png
$ file test.png
test.png: PNG image data, 595 x 842, 8-bit gray+alpha, non-interlaced
但我想在 python 中以编程方式完成此操作,而不依赖于
convert
或任何其他工具。我想出了 pdf2image
包,但我不知道如何获得透明度。这是我的尝试:
import pdf2image
with open("test.pdf", "rb") as fd:
pdf = pdf2image.convert_from_bytes(fd.read(), transparent=True)
pdf[0].save("test.png")
不幸的是我失去了透明度:
$ python test.py
$ file test.png
test.png: PNG image data, 1654 x 2339, 8-bit/color RGB, non-interlaced
有没有什么方法可以在不依赖外部工具的情况下使用
pdf2image
或任何其他包来做到这一点?
使用 PyMuPDF,您可以执行以下操作:
import pymupdf
doc=pymupdf.open("test.pdf")
for page in doc:
pix = page.get_pixmap(alpha=True, dpi=150)
pix.save(f"{doc.name}-{page.number}.png")
生成名为“test.pdf-0.png”等的透明 PNG 图像。 在上述情况下,图像的分辨率为 150 DPI。
注意:我是PyMuPDF的维护者和原始创建者。