Преобразование PDF в серию изображений с Python - PullRequest
46 голосов
/ 01 декабря 2008

Я пытаюсь использовать Python для преобразования многостраничного PDF в серию JPEG. Я могу достаточно легко разделить PDF-файл на отдельные страницы с помощью доступных инструментов, но я не смог найти ничего, что могло бы преобразовать PDF-файлы в изображения.

PIL не работает, так как не может читать PDF-файлы. Я нашел два варианта использования GhostScript или ImageMagick через оболочку. Для меня это неприемлемый вариант, поскольку эта программа должна быть кроссплатформенной, и я не уверен, что любая из этих программ будет доступна на машинах, на которых она будет установлена ​​и использована.

Существуют ли какие-либо библиотеки Python, которые могут это сделать?

Ответы [ 5 ]

20 голосов
/ 01 декабря 2008
7 голосов
/ 20 марта 2016

Вот что сработало для меня с помощью модуля python ghostscript (установленного $ pip install ghostscript):

import ghostscript

def pdf2jpeg(pdf_input_path, jpeg_output_path):
    args = ["pdf2jpeg", # actual value doesn't matter
            "-dNOPAUSE",
            "-sDEVICE=jpeg",
            "-r144",
            "-sOutputFile=" + jpeg_output_path,
            pdf_input_path]
    ghostscript.Ghostscript(*args)

Я также установил Ghostscript 9.18 на свой компьютер, и он, вероятно, не работал бы иначе.

4 голосов
/ 18 марта 2009

Вы не можете избежать зависимости Ghostscript. Даже Imagemagick использует Ghostscript для своих функций чтения PDF. Причиной этого является сложность формата PDF: PDF содержит не только растровую информацию, но в основном векторные фигуры, прозрачные пленки и т. Д. Кроме того, довольно сложно определить, какие из этих объектов отображаются на какой странице.

Таким образом, правильное отображение страницы PDF явно выходит за рамки чистой библиотеки Python.

Хорошей новостью является то, что Ghostscript предустановлен во многих системах Windows и Linux, поскольку он также необходим для всех этих принтеров PDF (кроме Adobe Acrobat).

1 голос
/ 14 декабря 2011

Возможно, актуально: http://www.swftools.org/gfx_tutorial.html

1 голос
/ 04 января 2010

Если вы используете Linux, некоторые версии поставляются с утилитой командной строки pdftopbm. Проверить netpbm

...