将 PDF 转换为 PNG 时出错 - Python 3.6 和 GhostScript
Posted
技术标签:
【中文标题】将 PDF 转换为 PNG 时出错 - Python 3.6 和 GhostScript【英文标题】:error Converting PDF to PNG - Python 3.6 and GhostScript 【发布时间】:2017-05-31 13:24:36 【问题描述】:在 python 3.6、windows 10 上将 pdf 文件转换为 png 的代码我遇到了很多麻烦。
我知道你要说什么:google it!
但我发现的几乎所有内容都在 python 2.7 上。而且有些包还没有更新。
到目前为止,我所看到的最好的方法是使用 Wand,对吗? (我之前安装过ImageMagick)
from wand.image import Image
# Converting first page into JPG
with Image(filename='0.pdf') as img:
img.save(filename="/temp.jpg")
# Resizing this image
这是我的第二个错误:
wand.exceptions.DelegateError: PDFDelegateFailed
`The system cannot find the file specified.' @ error/pdf.c/ReadPDFImage/809
所以我读到我需要 ghostscript。我安装了它。但该软件包适用于 python 2.7,它不起作用。我发现 python3-ghostscript 0.5.0。 https://pypi.python.org/pypi/python3-ghostscript/0.5.0
新错误:
RuntimeError: Can not find Ghostscript DLL in registry
所以在这里我需要安装 Ghostscript 9: https://www.ghostscript.com/download/gsdnld.html
首先,它不是 GPL 许可证……它甚至不是一个包,而是一个程序。我不知道如何在我的未来 python 代码中使用它...
还有一个错误:
RuntimeError: Can not find Ghostscript DLL in registry
我找不到任何东西。
【问题讨论】:
【参考方案1】:Ghostscript 在 AGPL 下获得许可,如果您需要源代码,可以在 /Program Files (x86)/gs/gs9.21/doc 中找到该许可,然后可以从 Ghostscript Git repository 获得它们。请注意,我假设您在 Windows 上运行,因为您引用了注册表。
如果您安装预构建的二进制文件,那么它将在 Windows 注册表中创建一个条目,我认为这就是您的 Python 代码正在寻找的内容,但我不能确定。如果需要,您应该确保安装 Python 所需的正确字长(32 或 64)版本。
当然,您可以简单地运行 Ghostscript 来呈现 PDF 文件并生成 PNG 输出。
gswin32c -sDEVICE=png16m -sOutputFile=out%d.png input.pdf
这将在输入 PDF 文件的每一页创建一个文件,对于 64 位版本使用 gswin64c...
您可以使用-r
开关更改输出的分辨率,例如-r300
我认为您可以简单地从 Python 中分叉一个进程。否则,您必须让某人告诉您 Python 脚本在注册表中查找的内容。也许它正在寻找特定版本的 Ghostscript,或者 32 位版本之类的。
【讨论】:
以上是关于将 PDF 转换为 PNG 时出错 - Python 3.6 和 GhostScript的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ghostscript 将 PDF 转换为 PDF/A 时出错
Ghostscript 设置 - 将任何 jpg 转换为 pdf 时出错