Преобразование PDF в серию изображений с помощью Python

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

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

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

Вы когда-нибудь находили решение? Я получил преобразование для работы, но не могу заставить ImageMagick уважать страницы.

stormlifter 02.08.2012 03:53

Надеюсь, это поможет - [stackoverflow.com/questions/34129995/pdf-to-raw-image] (stackoverflow.com/questions/34129995/pdf-to-raw-image)

SystemOverflow LLC 07.12.2015 19:09
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
48
2
41 911
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

ImageMagick имеет Привязки Python.

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

Coderer 18.12.2008 18:43

Уточните, какие привязки могут быть полезны?

Ivo Flipse 12.02.2013 16:49

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

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

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

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

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

Если это актуально, укажите соответствующие части в своем ответе.

Rebs 27.02.2015 09:10

Вот что у меня сработало при использовании модуля 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 на свой компьютер, иначе он, вероятно, не работал бы.

Кажется, это создает новое изображение, и я вижу миниатюру pdf, но по какой-то причине он не закрывает файл нового созданного jpeg. Я получил этот вывод из Python ##### 246643328 c_void_p(246643328L), есть идеи?

Jed 06.06.2017 01:28

Вы можете помочь решить мою проблему по этому делу? stackoverflow.com/questions/44448552/…

Jed 15.06.2017 21:05

ghostscript, похоже, не поддерживает python3

unlockme 15.11.2017 19:48

@ Идан Якоби, спасибо! это лучшее решение для моего python27.

Mark K 24.08.2018 05:19

Другие вопросы по теме