imagemagick将大型pdf拆分为png格式

imagemagick将大型pdf拆分为png格式,imagemagick,Imagemagick,我有一个pdf,我想将其拆分为单独的图片,每个页面都是一张图片,我正在使用以下imagemajick命令执行此操作: convert -density 400 mypdf.pdf out.png 它工作得很好,但是我在我的pdf的前5页上测试了它,用了10秒,按照这个速度,拆分我的pdf应该需要大约半个小时,考虑到我没有做任何花哨的事情,我没有旋转图像或修改它们,这对我来说似乎很奇怪,我想知道是否有更快的方法。谢谢 另外,我想保留质量,我以前在没有密度标志的情况下做过,但是质量急剧下降。PDF

我有一个pdf,我想将其拆分为单独的图片,每个页面都是一张图片,我正在使用以下imagemajick命令执行此操作:

convert -density 400 mypdf.pdf out.png
它工作得很好,但是我在我的pdf的前5页上测试了它,用了10秒,按照这个速度,拆分我的pdf应该需要大约半个小时,考虑到我没有做任何花哨的事情,我没有旋转图像或修改它们,这对我来说似乎很奇怪,我想知道是否有更快的方法。谢谢


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

PDF渲染有点乱

最好的系统可能是GhostScript及其库形式。它速度极快,可以很好地扩展到大型文档。不幸的是,库授权AFL很困难,您不能直接链接到二进制文件

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

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

$ time convert -density 400 nipguide.pdf[8] x.png
real    0m2.598s
另一种流行的PDF渲染器是。这来自xpdf文档预览器项目,所以速度很快,但只会很高兴地渲染到RGB。它也可以在大型文档上挣扎,而且它是GPL,所以你不能链接到它而不成为GPL

直接链接到poppler glib以进行PDF渲染,这样可以保存一些副本。我明白了:

$ time vips copy nipguide.pdf[page=8,dpi=400] x.png
real    0m0.904s
最后,还有一个问题。这是来自Chrome的PDF渲染库-它是旧的Foxit PDF预览器,相当粗糙地裁剪并制作成一个库。它比poppler稍微慢一点,但它有一个非常慷慨的许可证,这意味着您可以在poppler无法工作的情况下使用它

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

$ time vips copy nipguide.pdf[page=8,dpi=400] x.png
real    0m1.152s

如果您安装了Python,那么应该尝试PyMuPDF。它是一个用于MuPDF的Python绑定,非常易于使用,速度比xpdf快3倍。 呈现PDF页面是该软件包的主要业务。使用如下脚本:

#----------------------------------------------------------------------------------
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
#----------------------------------------------------------------------------------
有关矩阵的更多信息: 此表单将每个方向按2的因子进行缩放。因此,生成的PNG比原始的默认版本大4倍左右,大小为100%。两个尺寸都可以独立缩放。也可以仅旋转或呈现页面的一部分

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

使用能够提供足够质量的最低密度。不幸的是,我知道没有其他工具可以将pdf转换为png,除了Ghostscript,Imagemagick使用它来完成这项工作。但您可以尝试直接使用Ghostscript。可能还有其他我不知道的工具。您还可以使用pdfimages工具提取PDF中嵌入的光栅图像。我想您可以并行处理它们,看看这是否有帮助。你使用什么操作系统?