用于比较大量PDF文件的工具?
我需要比较大量的PDF文件的光学内容。 由于PDF文件是在不同的平台上创build的,而且软件版本不同,所以存在结构上的差异。 例如:
- 文本块可以是不同的
- 写入顺序可以不同
- 该位置可以是不同的像素
它应该比较人的内容而不是内部的结构。 我想要testing我们使用的不同版本的PDF生成器之间的回归。
因为我们没有写这样的工具。 您可以下载i-net PDF内容比较器并使用它。 我希望能帮助其他同样的问题。 如果您遇到问题,或者您有我们的反馈意见,请联系我们的支持。
实际上有一个diffpdf工具。
http://www.qtrac.eu/diffpdf.html
它的弱点是当添加新的文本部分移动到新的页面时,反应不好。 例如,如果应将旧的第4页与第5页的末尾和第6页的开头进行比较,则需要移动参数以分别比较两个切片。
我用了一个自制的脚本
- 将两个PDF上的所有页面转换为位图
- 将PDF 1的页面着色成红白色
- 在PDF 2的页面上将白色变为透明
- 从PDF 1的相应页面的顶部覆盖PDF 2中的每个页面
- 在多个核上运行转换/着色和并行重叠
使用的软件:
- 用于PDF到位图转换的GhostScript
- ImageMagick用于着色,透明度和覆盖
- inotify同步并行进程
- 任何支持PNG的图像查看器来查看结果
优点:
- 简单的实现
- 所有使用的工具都是开源的
- 非常适合寻找布局上的小差异
缺点:
- 转换很慢
- PDF之间的主要差异(例如分页)导致一团糟
- 位图不可缩放
- 只适用于黑白文字和图表
- 没有易于使用的graphics用户界面
我一直在寻找一种工具,可以在PDF / PostScript层面上做到这一点。
以下是我们的脚本如何调用实用程序(请注意,ImageMagick在幕后使用GhostScript执行PDF-> PNG转换):
$ convert -density 150x150 -fill red -opaque black +antialias 1.pdf back%02d.png $ convert -density 150x150 -transparent white +antialias 2.pdf front%02d.png $ composite front01.png back01.png result01.png # do this for all pairs of images
我似乎无法看到这里,所以这里是:通过超级用户:如何比较两个PDF文件之间的差异? (回答#229891,由@slestak) ,有
https://github.com/vslavik/diff-pdf
(Ubuntu Natty的构build步骤可以在get-diff-pdf.sh中find)
据我所知,它基本上覆盖了每个页面的文本/graphics的pdf(s),让你很容易看到是否有任何改变…
干杯!
我们还使用了pdftotext (请参阅Sklivvz的答案)来生成ASCII版本的PDF和wdiff来比较它们。
使用pdftotext的-layout
开关来增强可读性,并获得布局变化的一些想法。
为了从wdiff获得漂亮的输出,使用这个包装脚本:
#!/bin/sh RED=$'\e'"[1;31m" GREEN=$'\e'"[1;32m" RESET=$'\e'"[0m" wdiff -w$RED -x$RESET -y$GREEN -z$RESET -n $1 $2
我认为你最好的办法是将PDF转换成图像的体面分辨率和图像比较。
要从PDF生成图像,您可以使用Adobe PDF Library或者以最佳方式build议的解决scheme将PDF文件转换为tiff文件 。
为了比较生成的TIFF文件,我发现GNU tiffcmp (用于GnuWin32 tiff的 windows部分)和tiffinfo做得很好。 使用tiffcmp -l并计算输出的行数以find任何差异。 如果您很高兴有less量内容更改(例如,抗锯齿差异),请使用tiffinfo来计算像素总数,然后生成百分比差异值。
顺便说一下,任何人做简单的PDF比较结构没有改变,可以使用命令行比较和忽略某些模式,例如GNU diff 2.7:
diff --brief -I xap:-I xapMM:-I / CreationDate -I / BaseFont -I / ID --binary --text
这仍然有问题,它并不总是捕捉生成的字体名称的变化。
我们的产品,PDF比较器 – http://www.premediasystems.com/pdfc.html “ – 将会非常高效和高效地完成这个任务,它也不是免费的,而且是一个仅适用于Mac OS X的应用程序。
根据您的需求,转换为文本解决scheme将是最简单和最直接的。 我确实认为位图的想法很酷。
blubeam pdf软件将为您做这个
您可以批量比较pdf文件与Tarkware PDF 比较器 。 但它不是免费的,需要Adobe Acrobat。