使用命令行替换 PDF 中的图像

Iva*_*van 12 command-line pdf images

我需要处理一些PDF文件。该任务包括交换另一个给定的图像文件。我的第一个问题是如何在批处理中从命令行替换 PDF 图像。接下来,我将尝试解决其他问题,例如如何识别我需要替换的图像(因为 PDF 文件可能有多个图像)。但首先我想解决第一个问题:如何用另一个替换 PDF 中的图像。

我已经阅读过 poppler-utils 和 pdftk,但据我所知,这些工具都不允许将图像替换为 PDF。

小智 2

好吧……我认为pdflatex这是这里缺失的部分。

OP 表示他已经调查了poppler-utilspdftk。让我补充一下pdfimages。这些pdflatex都是解决方案的组成部分。

pdfimages -f 4 -l 20 -j -png target.pdf imageroot
Run Code Online (Sandbox Code Playgroud)

在上面的示例代码中,pdfimages 浏览第 4 页到第 20 页target.pdf,并将所有图像提取到名称以 开头的文件中imageroot

poppler-utils提供pdftotext. 我推荐这个-layout选项,它可以很好地保持文档的可读性。

pdftotext -layout $1.pdf $1.txt
Run Code Online (Sandbox Code Playgroud)

OP对pidosaurusimagemagick提供的解决方案的反对意见是图像没有可提取的文本。使用我概述的实用程序,OP 现在将拥有所有图像以及所有提取的文本,并且该选项保留页码和内容。OP 可以识别正确的文本页面并将其放入一个以指令结尾的文件中,并通过文件名引用替换图片。然后,您将得到一个新的单页 .pdf,并使用 .pdf 插入文档的其余部分。如果您知道图像在原始页面文本中的位置,则可以将图像放置在正确的位置。-layout.tex%includegraphicspdflatexpdftk%includegraphics [h]

  • 抱歉,这并不能解决问题。您忘记了布局可以任意复杂。一个更好(但仍然不准确)的解决方案是将 PDF 转换为 SVG 文件,然后进行更改并转换回来。但这也有损失。问题是:如果可以提取图像,那么也应该可以用另一张图像替换一张图像。至少另一个具有相同 xy 尺寸的。或者使用相同的文件大小(如未压缩的图像)甚至更好。 (3认同)