将多页 PDF 转换为 TIFF 不适用于 Python 库 Wand

Converting multipage PDF to TIFF does not work with Python library Wand

给定简短的 5 页 PDF 文件(附在底部)和以下 python 转换为多页 TIFF 的代码:

from wand.image import Image


with Image(filename='5-page-pdf.pdf', resolution=200) as img:
    img.type = "grayscale"
    img.format = "tiff"
    img.compression = "lzw"
    img.save(filename="test.tiff")

生成一个 TIFF 文件,其中第 2-4 页看起来是深灰色(或透明)背景上的黑色文本。其他图像处理库无法打开或渲染文件。

使用 Wand 使用的 ImageMagick 转换同一个 PDF 效果很好

convert -density 200 5-page-pdf.pdf -type grayscale -compress lzw 5-page-pdf.tiff

这生成的文件可以与其他图像库一起使用,并且在 TIFF 查看器中看起来正确。

我试过删除 alpha 通道,我试过将背景颜色设置为 'White',还有一些其他的东西,但都无济于事。从 Wand 出来的 TIFF 总是乱码。如果在 ImageMagick 中可行,那么在 Wand 中也应该可行,对吧?我缺少什么参数或设置?

Original PDF

Wand Produced TIFF

看起来设置 img.alpha_channel 属性 没有跨页面传播。

试试这个解决方法

from wand.api import library
from wand.image import Image

with Image(filename="5-page-pdf.pdf", resolution=200) as img:
    img.type = 'grayscale'
    img.compression = "lzw"
    # Manually iterate over all page, and turn off alpha channel.
    library.MagickResetIterator(img.wand)
    for idx in range(library.MagickGetNumberImages(img.wand)):
        library.MagickSetIteratorIndex(img.wand, idx)
        img.alpha_channel = 'off'
    img.save(filename="test.tiff")