我已经从非官方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)
但是,使用相对的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位。)
C:\Program Files (x86)\ImageMagick-6.8.1-Q16
)。 C:\Program Files (x86)\gs\gs9.06\bin
为您的系统范围路径。 convert some.pdf some.jpg
。 如果它不起作用,你在1-3点做错了。 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)
这是我脑海中唯一解决这个问题的方法。