当前位置: 首页 > 面试题库 >

PDF在Linux命令行上进行比较

濮阳功
2023-03-14
问题内容

我正在寻找一个Linux命令行工具来比较两个PDF文件并将差异保存到PDF输出文件中。该工具应在批处理过程中创建diff-
pdf。PDF文件是施工计划,因此纯文本比较无效。

就像是:

<tool> file1.pdf file2.pdf -o diff-out.pdf

我发现的大多数工具都将PDF转换为图像并进行比较,但只能使用GUI。

也欢迎任何其他解决方案。


问题答案:

使用(全能的)imagemagick和pdftk分两行完成:

compare -verbose -debug coder $PDF_1 $PDF_2 -compose src $OUT_FILE.tmp
pdftk $OUT_FILE.tmp background $PDF_1 output $OUT_FILE

选项-verbose和-debug是可选的。

  • 比较会创建一个差异为红色像素的PDF。
  • pdftk将diff-pdf与背景PDF_1合并


 类似资料:
  • 如何在linux命令行中从maven命令运行文件?

  • 问题内容: 我正在通过Java上的JSch建立ssh连接,在我尝试运行此.sh文件之前,一切似乎都工作正常。外壳程序脚本的名称是 repoUpdate.sh ,它非常简单: 这是我在Linux控制台上直接获得的输出,其中包含命令的正确响应: 现在,这是带有ssh连接的我的方法的Java代码,该代码试图调用同一文件 我得到的答复如下: svn命令(版本9432)没有任何输出或执行的迹象。 我认为这可

  • 我正在通过Java上的JSch建立一个SSH连接,在我尝试运行它之前,一切似乎都很正常。sh文件。shell脚本的名称是

  • 问题内容: 我从Linux 64位汇编程序访问进程命令行时遇到问题。为了用最少的代码重现该代码,我制作了一个32位程序,该程序打印程序名的前5个字符: 该程序正在运行。当我将其转换为64位并在Linux 64上运行时,它不会显示任何内容: 我的错误在哪里? 问题答案: 您正在将正确的地址加载到中。 然后调用32位syscall接口。这会将地址截断为32位,这使它不正确。(如果您使用调试器并在第一个

  • 如果我执行plink命令 当提示输入密码时,我将获得 Sudo:没有tty存在,也没有指定askpass程序 Sudo:3次错误的密码尝试 如何从执行sudo?或者有其他选择吗?

  • 问题内容: 我一直在寻找通过Linux中的命令行查找具有相同名称的正在运行的进程数的最佳方法。例如,如果我想查找正在运行的bash进程数并获得“ 5”。目前,我有一个脚本执行’pidof’,然后对标记化字符串进行计数。这工作正常,但我想知道是否有更好的方法可以完全通过命令行来完成。在此先感谢您的帮助。 问题答案: 在可用的系统上,该选项返回与给定名称匹配的进程数的计数 请注意,这是-style匹配