我需要比较大量的光学内容的PDF文件。由于PDF文件是在不同的平台上以及使用不同版本的软件创建的,因此存在结构差异。例如:
- 文本块可以不同
- 写入顺序可以不同
- 位置可能会有所不同
它应该像人类一样比较内容,而不是内部结构。我想测试我们使用的PDF生成器的不同版本之间的回归。
我需要比较大量的光学内容的PDF文件。由于PDF文件是在不同的平台上以及使用不同版本的软件创建的,因此存在结构差异。例如:
它应该像人类一样比较内容,而不是内部结构。我想测试我们使用的PDF生成器的不同版本之间的回归。
Answers:
因为没有可用的工具,所以我们已经编写了一个。您可以下载并使用i-net PDF内容比较器。希望对其他有相同问题的人有所帮助。如果您有任何问题或对我们有反馈,则可以联系我们的支持。
实际上有一个diffpdf工具。
http://www.qtrac.eu/diffpdf.html
它的缺点是,当添加内容使新文本部分转移到新页面时,它的反应不好。例如,如果将旧的第4页与第5页的末尾和第6页的开始进行比较,则需要移动参数以分别比较两个切片。
我使用了自制脚本
使用的软件:
优点:
缺点:
我一直在寻找一种可以在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
for i in $(seq -w 0 05); do /cygdrive/c/Progra~1/ImageMagick-6.6.9-Q8/composite.exe 1-$i.png 2-$i.png result-$i.png; done
pdfdiff
目录中PDF的每一页输出一个JPG,并另外打印两个PDF之间不同的页数。
我似乎在这里看不到它,所以这里是:通过超级用户:如何比较两个PDF文件之间的差异?(由#slestak回答#229891),有
https://github.com/vslavik/diff-pdf
(Ubuntu Natty的构建步骤可以在get-diff-pdf.sh中找到)
据我所知,它基本上覆盖了pdf中每页的文本/图形,使您可以轻松查看是否有任何更改...
干杯!
我认为您最好的方法是将PDF转换为具有适当分辨率的图像,而不是将图像进行比较。
要从PDF生成图像,可以使用Adobe PDF Library或“最佳方法”中建议的将pdf文件转换为tiff文件的解决方案。
为了比较生成的TIFF文件,我发现GNU tiffcmp(对于Windows来说是GnuWin32 tiff的一部分)和tiffinfo做得很好。使用tiffcmp -l并计算输出的行数以发现任何差异。如果您乐意进行少量内容更改(例如抗锯齿差异),请使用tiffinfo计数像素总数,然后可以生成百分比差异值。
顺便说一下,对于进行结构未更改的简单PDF比较的任何人,都可以使用命令行diff并忽略某些模式,例如使用GNU diff 2.7:
diff --brief -I xap:-I xapMM:-I / CreationDate -I / BaseFont -I / ID --binary --text
这仍然存在一个问题,即它并不总是捕获生成的字体名称中的更改。
我们的产品PDF Comparator- http://www.premediasystems.com/pdfc.html “-可以非常有效地优雅地完成此操作。它也不是免费的,并且是Mac OS X专用的应用程序。