首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >imagemagick将大型pdf拆分成png格式

imagemagick将大型pdf拆分成png格式
EN

Stack Overflow用户
提问于 2018-04-25 12:34:51
回答 2查看 792关注 0票数 2

我有一个pdf我想拆分成单独的图片,每个页面都是一张图片,我使用以下imagemajick命令来做到这一点:

代码语言:javascript
复制
convert -density 400 mypdf.pdf out.png

它工作得很好,但是我已经测试了我的pdf的前5页,它花了10秒,在这种速度下,它应该需要大约半个小时来分割我的pdf,这对我来说似乎很奇怪,考虑到我并没有真正做任何花哨的事情,我没有旋转图像或修改它们,我想知道有没有更快的方法来做到这一点。谢谢

另外,我想保留质量,我之前在没有密度标志的情况下做了,但质量急剧下降。

EN

回答 2

Stack Overflow用户

发布于 2018-04-25 16:12:25

PDF渲染有点乱。

最好的系统可能是GhostScript和它的库形式MuPDF。它的速度非常快,并且可以很好地扩展到大型文档。不幸的是,库许可(AFL)是困难的,并且你不能直接链接到二进制文件。

ImageMagick通过使用ghostscript命令行工具绕过了这一限制,但当然这意味着呈现PDF页面现在是一个多阶段的过程:将PDF复制到/tmp,使用一组命令行标志执行ghostscript以将文档呈现为/tmp中的图像文件,然后再次读入此临时图像文件,提取页面,最后将图像写入输出PNG。

在我的笔记本电脑上我看到:

代码语言:javascript
复制
$ time convert -density 400 nipguide.pdf[8] x.png
real    0m2.598s

另一个流行的PDF渲染器是poppler。这来自xpdf文档预览器项目,所以它很快,但只有在渲染到RGB时才真正满意。它也可以在大文档上挣扎,而且它是GPL,所以如果不成为GPL,你就不能链接到它。

libvips直接链接到poppler-glib以进行渲染,因此您可以保存一些副本。我明白了:

代码语言:javascript
复制
$ time vips copy nipguide.pdf[page=8,dpi=400] x.png
real    0m0.904s

最后是PDFium。这是Chrome的PDF渲染库--它是旧的Foxit PDF预览器,相当粗糙地裁剪并做成一个库。它比poppler慢一点,但它有一个非常慷慨的许可证,这意味着你可以在poppler不能工作的情况下使用它。

有一个实验性的libvips分支,它使用PDFium进行PDF渲染。有了这些,我明白了:

代码语言:javascript
复制
$ time vips copy nipguide.pdf[page=8,dpi=400] x.png
real    0m1.152s
票数 2
EN

Stack Overflow用户

发布于 2018-10-26 21:07:20

如果您安装了Python,则应该尝试使用PyMuPDF。它是一个MuPDF的Python绑定,非常容易使用并且非常快(比xpdf快3倍)。渲染PDF页面是这个包的基本业务。使用如下脚本:

代码语言:javascript
复制
#----------------------------------------------------------------------------------
import fitz
fname = sys.argv[1]        # get filename from command line
doc = fitz.open(fname)     # open the file
mat = fitz.Matrix(2,2)     # controls resolution: scale factor in x and y direction
for page in doc:
    pix = page.getPixmap(matrix=mat, alpha=False)
    pix.writePNG("p-%i.png" % page.number) # write the page's image
#----------------------------------------------------------------------------------

还有"Matrix":这个表单将每个方向缩放2倍。因此,生成的PNG比默认的原始版本大4倍,大小为100%。这两个维度都可以独立缩放。旋转或只渲染页面的一部分也是可能的。

更多关于PyMuPDF的内容: PyPI提供了适用于Windows、OSX和所有Linux版本的二进制轮子。因此,安装只需要几秒钟的时间。Python部分的许可证是GNU GPL3,用于MuPDF部分GNU AFFERO GPL3,所以它是开源和免费的。创建商业产品被排除在外,但您可以在相同的许可证下自由分发。

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

https://stackoverflow.com/questions/50014139

复制
相关文章

相似问题

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