PythonMagick не может найти мои файлы PDF

Я загрузил и установил PythonMagick для python 2.7, 64 бит Windows 7, из неофициальных двоичных файлов Windows.

Я пытаюсь запустить этот код (Processor.py)

import PythonMagick pdf = 'test.pdf' p = PythonMagick.Image() p.density('600') p.read(pdf) p.write('doc.jpg') 

в этой папке (D: \ Python Projects \ Sheet Music Reader) D: \ Python Projects \ Листовая музыка

Однако использование этого относительного пути pdf или pdf = "D:\\Python Projects\\Sheet Music Reader" приводит к этой ошибке;

 Traceback (most recent call last): File "D:/Python Projects/Sheet Music Reader/Processor.py", line 6, in <module> p.read(pdf) RuntimeError: Magick: PostscriptDelegateFailed `D:\Python Projects\Sheet Music Reader\test.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/664 

Я просто не понимаю, почему он не может найти мой pdf; он находится в том же каталоге, что и скрипт python.

Что вызывает эту ошибку и как ее исправить?
(У меня сложилось впечатление, что преобразование PDF-файлов в изображения на питоне – ночная кобыла)

One Solution collect form web for “PythonMagick не может найти мои файлы PDF”

У меня была такая же проблема пару дней назад. В то время как преобразование из .gif (иначе что-то еще) в .jpg работало очень хорошо, преобразование из .pdf в .jpg производило точно такую ​​же ошибку. Thats happing, потому что ImageMagick использует Ghostscript для чтения / преобразования PDF-файлов.

Вы можете решить проблему, установив Ghostscript (работает только 32-разрядная версия). Не забудьте добавить к вашему системному пути «C: \ Program Files (x86) \ gs \ gs9.06 \ bin».

Здесь пошаговое руководство, как я получал работу PythonMagick:
(Я использую Python 2.7.3 32-бит в Windows 7 64-бит.)

  1. Установите последнюю версию ImageMagick («ImageMagick-6.8.1-1-Q16-windows-dll.exe» на момент написания. Обратите внимание, что это 32-разрядная версия, 64-разрядная версия для меня тоже прекрасна).
    НЕ забывайте проверить параметр «Установить заголовки и библиотеки разработки для C и C ++» .
  2. Установите среду « MAGICK_HOME » на путь ImageMagick (для меня C:\Program Files (x86)\ImageMagick-6.8.1-Q16 ).
    Дополнительно установите этот путь на свой системный путь на самой первой позиции, если он еще не существует.
  3. Загрузите и установите 32-разрядную версию GhostScript (64-разрядная версия не будет работать, даже если вы установили 64-разрядную версию ImageMagick).
    Установите C:\Program Files (x86)\gs\gs9.06\bin на ваш системный путь сразу после ImageMagick.
  4. Проверьте, работает ли ваша установка. Попробуйте convert some.pdf some.jpg в командной строке. Если он не работает, вы сделали что-то неправильно в точке 1-3.
  5. Установите PythonMagick с неофициальным двоичным кодом , а не с easy_install или pip.
    (Опять же: я использую 32-разрядный интерпретатор Python 2.7.3, поэтому для этого я взял «PythonMagick-0.9.7.win32-py2.7.exe».)
  6. Начните с использования командной строки Python и попробуйте что-то вроде этого:
 from PythonMagick import Image im = Image() im.read(r"C:\Path\To\Some.pdf") im.write("some.jpg") 

Дополнительный пример для PDF с несколькими страницами:

 import os from pyPdf import PdfFileReader, PdfFileWriter from tempfile import NamedTemporaryFile from PythonMagick import Image reader = PdfFileReader(open("some.pdf", "rb")) for page_num in xrange(reader.getNumPages()): writer = PdfFileWriter() writer.addPage(reader.getPage(page_num)) temp = NamedTemporaryFile(prefix=str(page_num), suffix=".pdf", delete=False) writer.write(temp) temp.close() im = Image() im.density("300") # DPI, for better quality im.read(temp.name) im.write("some_%d.jpg" % (page_num)) os.remove(temp.name) 

Это единственное решение этой проблемы, которое приходит мне в голову.

  • Обнаружение вызова скрипта Python из Windows DLL при использовании CTypes
  • wxPython не будет закрывать Frame с родителем, который является дескриптором окна
  • «OverflowError: Python int too large, чтобы преобразовать в C long» на windows, но не mac
  • Ошибка авторизации кликов PyAutoGui
  • Асинхронно читать stdout из подпроцесса. Popen
  • Ошибка памяти при использовании pandas read_csv
  • pathname слишком долго, чтобы открыть?
  • Изменить имя процесса скрипта Python
  • Python - лучший язык программирования в мире.