如何使用 Imagemagick 替换单个 PDF 页面?
Posted
技术标签:
【中文标题】如何使用 Imagemagick 替换单个 PDF 页面?【英文标题】:How can I replace a single PDF page using Imagemagick? 【发布时间】:2021-02-19 17:57:30 【问题描述】:我有一个多页的 PDF 文档,我想要一个文档版本,其中一个页面在中间,并带有扫描副本,因为我需要在文档中进行物理签名。如何使用 ImageMagick 做到这一点?我知道 ImageMagick 不一定是这项工作的最佳工具。但是,生成的 PDF 不需要是高质量或高保真副本,因此应该足以满足我的需求。
作为一个具体示例,我有一个 9 页 my-file.pdf
,我想创建一个 PDF 副本,其中第 8 页替换为 page-8.png
。看起来我应该能够使用convert
工具实现这个目标,尽管语法是什么还不是很明显。我怎样才能实现这个目标?
如果我只想将新页面附加到文件末尾,我知道我可以执行以下操作:
convert my-file.pdf page-8.png output-file.pdf
但是,这最终是原始页面 1-9,然后是新页面 8。我真正想要的是用新页面 8 替换原始页面 8。我想要的输出是:
[original pages 1 - 7],[new page 8],[original page 9]
【问题讨论】:
Close discussion 【参考方案1】:正如问题和评论中所指出的,Imagemagick 不是这个任务的好工具,因为它光栅化了 PDF 的输出。避免这种情况的替代解决方案是使用pdftk 替换页面。虽然插入的页面仍然是图像,但被替换的页面不会被光栅化。
首先,使用具有此功能的应用程序将扫描的页面保存为 PDF。然后,使用 pdftk cat
操作合并 PDF:
pdftk A=my-file.pdf B=page-8.pdf cat A1-7 B A9 output output-file.pdf
【讨论】:
【参考方案2】:可以使用括号语法和从零开始的索引来指定特定页面或页面范围。例如,[8]
将引用第九页,[0-6]
将引用前七页。使用它,可以实现替换第 8 页的 PDF 副本,如下所示:
convert my-file.pdf[0-6] page-8.png my-file.pdf[8] output-file.pdf
【讨论】:
Imagemagick 不保留矢量数据。输出将全部栅格化。它不会是所有的矢量页面,除了一个被替换的页面。输出中的所有页面都将被光栅化。如果这无关紧要,那么这个解决方案就可以了。以上是关于如何使用 Imagemagick 替换单个 PDF 页面?的主要内容,如果未能解决你的问题,请参考以下文章
使用 imagemagick 将剪切/裁剪标记添加到 pdf