Конвертируйте PDF в изображение, используя Python - PullRequest
2 голосов
/ 16 марта 2020

Я пытаюсь преобразовать pdf-файл в файл изображения для этого на моем сервере Ubuntu, который я установил:

  1. python2 .7
  2. poppler-utils
  3. pdf2image == 1.12.1

Мой код:

from pdf2image import convert_from_path, convert_from_bytes

images = convert_from_path("/home/user/pdf_file.pdf")

# OR

with open("/home/user/pdf_file.pdf") as pdf:
    images = convert_from_bytes(pdf.read())

ВЫХОД

Когда я использую функцию "convert_from_path"

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pdf2image/pdf2image.py", line 143, in convert_from_path
    thread_output_file = next(output_file)
TypeError: ThreadSafeGenerator object is not an iterator

Когда я использую функцию "convert_from_bytes"

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pdf2image/pdf2image.py", line 268, in convert_from_bytes
    paths_only=paths_only,
  File "/usr/local/lib/python2.7/dist-packages/pdf2image/pdf2image.py", line 143, in convert_from_path
    thread_output_file = next(output_file)
TypeError: ThreadSafeGenerator object is not an iterator

Я переустанавливал все мои коммунальные услуги, то я сталкиваюсь с этими проблемами.

Ответы [ 2 ]

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

Я тоже потерпел неудачу в python2, но преуспел в python3.

Та же проблема произошла с другой библиотекой: TypeError: объект 'threadsafe_iter' не является итератором

Как уже говорилось, это проблема python 2 против 3, вызванная функцией next ().
Если изменить __next__() -> next() в файле /home/***/.local/lib/python2.7/site-packages/pdf2image/generators.py, она будет выполнена успешно в py2.

Кстати, я создал новую проблему для команды pdf2image.
TypeError: объект ThreadSafeGenerator не является итератором # 133


Дополнительно
pdf2image readme сказал, что это модуль python (3.5+).
pdf2image v1.7.1 работает на py27. попробуйте по pip install pdf2image==1.7.1

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

Если вы хотите конвертировать PDF в изображение, вы можете попробовать Python Пакет Ghostscript :

pip install ghostscript

import ghostscript
import locale

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

    encoding = locale.getpreferredencoding()
    args = [a.encode(encoding) for a in args]

    ghostscript.Ghostscript(*args)

pdf2jpeg(
    "...Fixate/ActiveState/pdf/a.pdf",
    "...Fixate/ActiveState/pdf/a.jpeg",
)
...