PythonMagick无法find我的PDF文件

我已经从非官方Windows二进制文件下载并安装PythonMagick for python 2.7,64位Windows 7 。

我试图运行这个代码(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 \ Sheet Music Reader

但是,使用相对的pdfpath或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脚本在同一个目录下。

什么导致这个错误,我该如何解决?
(我的印象是,在Python中将PDF转换为图像是一个夜晚的母马)

几天前我也遇到了同样的问题。 从.gif(或其他东西)转换为.jpg工作得很好,从.pdf转换为.jpg产生完全相同的错误。 这是因为ImageMagick使用Ghostscript读取/转换PDF文件。

你可以通过安装Ghostscript来解决这个问题(只有32位版本的作品)。 不要忘记将“C:\ Program Files(x86)\ gs \ gs9.06 \ bin”添加到您的系统路径中。

这里是一个一步一步的指导,我如何获得PythonMagick的工作:
(我在Windows 7 64位上使用Python 2.7.3 32位。)

  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位版本的ImageMagick,64位也不起作用)。
    在ImageMagick之后,将C:\Program Files (x86)\gs\gs9.06\bin为您的系统范围路径。
  4. 检查你的设置是否有效。 尝试在命令行中convert some.pdf some.jpg 。 如果它不起作用,你在1-3点做错了。
  5. 安装PythonMagick与非官方的二进制文件,而不是easy_install或点。
    (再说一遍:我使用的是32位Python 2.7.3解释器,所以我拿了“PythonMagick-0.9.7.win32-py2.7.exe”)。
  6. 开始你的Python命令行util并尝试这样的事情:
 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) 

这是我脑海中唯一解决这个问题的方法。