【问题标题】:Combine multi-page PDFs into one PDF with ImageMagick使用 ImageMagick 将多页 PDF 合并为一个 PDF
【发布时间】:2013-06-16 16:44:45
【问题描述】:

我正在尝试使用 ImageMagick (6.8.0) 将多个多页 PDF 合并为一个 PDF。这个命令:

$ convert multi-page-1.pdf multi-page-2.pdf merged.pdf

返回merged.pdf,其中包含multi-page-1.pdf的首页页和multi-page-2.pdf的首页页。 p>

这个命令:

$ convert multi-page-1.pdf[2] multi-page-2.pdf[2] merged.pdf

返回merged.pdf,其中包含multi-page-1.pdf的第三页和multi-page--2.pdf的第三页。

我想合并.pdf 以包含每个多页 pdf 的所有页面。尽管我尝试在文件名的末尾添加 [0-1] 和 [0,1],但我到目前为止还没有找到一种方法来告诉转换命令使用一系列页面。

有趣的是,这个 ghostscript 命令(我通过 StackOverflow 找到但无法重新找到)确实可以按我的意愿工作:

$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf multi-page-1.pdf multi-page-2.pdf 

问题是,ImageMagick 'convert' 命令将 url 作为输入,而 ghostscript 没有,我需要我的程序接受 url 输入而不是文件路径。

是否可以使用 ImageMagick 得到上述 ghostscript 命令的结果?

【问题讨论】:

  • 只是指出,当 ImageMagick 读取矢量 PDF 时,它会对其进行光栅化。如果您随后创建一个新 PDF,它将是矢量外壳内的光栅图像,并且与光栅化图像一样大。所以你想要做的不是使用 ImageMagick 的好主意。

标签: imagemagick ghostscript


【解决方案1】:

你为什么不用pdfunite

例子:

$ pdfunite 1.pdf 2.pdf 3.pdf merged.pdf

【讨论】:

    【解决方案2】:

    我在公司内部论坛上提出了这个问题,得出的结论是,如果不先将文件下载到本地文件系统,就无法使用 ImageMagick 进行文档合并类型。

    对于那些使用 Heroku 的人,我们正在利用 Heroku 的 'tmp' 目录来“本地”保存文件以用于暂存和生产:https://devcenter.heroku.com/articles/read-only-filesystem

    一旦我们将文件保存在 'tmp' 中,我们将遍历 pdf 的每一页并分别保存它们。我们将使用 'pdf-reader' gem 找到 PDF 页面的数量。

    编辑:

    这是我为处理这个问题而编写的自定义回形针处理器(所有文件都预先下拉到 tmp 目录):

    https://gist.github.com/jessieay/5832466

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 1970-01-01
      • 2013-01-22
      • 2014-10-02
      • 2013-06-10
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多