代码之家  ›  专栏  ›  技术社区  ›  qouify

将PDF转换为具有透明度的PNG

  •  1
  • qouify  · 技术社区  · 5 月前

    我的目标是从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中以编程方式完成它,而不依赖于 转换 或任何其他工具。我想出了 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
    

    是否有任何方法可以在不依赖外部工具的情况下使用 pdf2图像 还是其他包裹?

    1 回复  |  直到 5 月前
        1
  •  3
  •   Jorj McKie    5 月前

    使用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 .