首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PythonMagick找不到我的pdf文件

PythonMagick找不到我的pdf文件
EN

Stack Overflow用户
提问于 2012-12-21 12:41:02
回答 1查看 9.8K关注 0票数 10

我已经从Unofficial Windows Binaries.下载并安装了Python2.7,64位Windows7的PythonMagick

我正在尝试运行这段代码(Processor.py)

代码语言:javascript
复制
import PythonMagick

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

在此文件夹中(D:\Python Projects\Sheet Music Reader)

但是,使用相对pdf路径或pdf = "D:\\Python Projects\\Sheet Music Reader"会导致此错误;

代码语言:javascript
复制
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转换为图像是一个噩梦)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-21 16:39:25

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

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

下面是我如何让PythonMagick工作的分步指南:

(我在64位Windows 7上使用的是Python 2.7.3 32位。)

  1. 在编写本文时安装最新版本的ImageMagick ("ImageMagick-6.8.1-1-Q16-windows-dll.exe“)。请注意,这是32位版本;64位也适用于我)。

别忘了勾选"Install development headers libraries for CC++“选项。

  • 将"MAGICK_HOME”环境设置为ImageMagick (for me C:\Program Files (x86)\ImageMagick-6.8.1-Q16)路径。

另外,如果尚未安装there.

  • Download,请将此路径设置为系统范围路径的第一个位置,并安装32位版本的GhostScript (即使安装了64位版本的ImageMagick,64位也不起作用)。

如果您的设置可以正常工作,请在ImageMagick.

  • Check之后将C:\Program Files (x86)\gs\gs9.06\bin设置为系统范围的路径。在命令行中尝试使用convert some.pdf some.jpg

  • 使用非官方的二进制文件安装PythonMagick,而不是使用easy_install或pip。

(再说一次:我使用的是32位Python2.7.3解释器,因此我使用了“PythonMagick-0.9.7.win32-py2.7.util”。)

  • 启动您的‌命令行并尝试如下所示:

util

代码语言:javascript
复制
from PythonMagick import Image
im = Image()
im.read(r"C:\Path\To\Some.pdf")
im.write("some.jpg")

附加一个包含多个页面的PDF的示例:

代码语言:javascript
复制
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)

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

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13984357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档