Преобразование многостраничного PDF в TIFF не работает с библиотекой Python Wand - PullRequest
0 голосов
/ 10 марта 2020

С учетом короткого 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 как черный текст на темно-сером (или, может быть, прозрачном) фоне. Другие библиотеки обработки изображений не могут открыть файл или отобразить его.

Преобразование того же PDF с помощью imagemagick, который использует Wand, прекрасно работает

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

, это создает файл, который работает с другими библиотеками изображений и выглядит корректно в средстве просмотра TIFF.

Я пытался удалить альфа-канал, я пытался установить цвет фона на «Белый» и некоторые другие вещи, но безрезультатно. TIFF, который выходит из Wand, всегда искажается. Если это выполнимо в ImageMagick, то должно быть выполнимо в Wand, верно? Какой параметр или настройку мне не хватает?

Оригинальный PDF

Wand Produced TIFF

1 Ответ

1 голос
/ 10 марта 2020

Похоже, что установка свойства 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")
...