我需要比较大量的PDF文件才能获得光学内容。由于PDF文件是在不同平台上创建的,并且使用不同版本的软件,因此存在结构差异。例如:
它应该比较人类而不是内部结构的内容。我想测试我们使用的不同版本的PDF生成器之间的回归。
答案 0 :(得分:39)
因为没有这样的工具,我们已经写了一个。您可以下载i-net PDF content comparer并使用它。我希望帮助其他同样的问题。如果您遇到问题或者我们有反馈意见,那么您可以联系我们的支持。
答案 1 :(得分:19)
实际上有一个diffpdf工具。
http://www.qtrac.eu/diffpdf.html
它的缺点是,当添加新文本部分转移到新页面时,它没有很好的反应。例如,如果应将旧页面4与第5页的末尾和第6页的开头进行比较,则需要移动参数以分别比较两个切片。
答案 2 :(得分:12)
我使用了自制的脚本
使用的软件:
优点:
缺点:
我一直在寻找一种在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
答案 3 :(得分:11)
我似乎无法在此处看到这一点,所以这里是:通过superuser: How to compare the differences between two PDF files? (answer #229891, by @slestak),有
https://github.com/vslavik/diff-pdf
(Ubuntu Natty的构建步骤可以在get-diff-pdf.sh)
中找到据我所见,它基本上覆盖了pdf(s)中每个页面的文本/图形,让您可以轻松查看是否有任何更改......
干杯!
答案 4 :(得分:8)
我们还使用pdftotext(参见Sklivvz的答案)生成PDF版本的ASCII版本和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
答案 5 :(得分:4)
我认为您最好的方法是将PDF转换为具有良好分辨率的图像,而不是进行图像比较。
要从PDF生成图像,您可以使用Adobe PDF Library或Best way to convert pdf files to tiff files建议的解决方案。
为了比较生成的TIFF文件,我发现GNU tiffcmp(对于GnuWin32 tiff的windows部分)和tiffinfo做得很好。使用tiffcmp -l并计算输出行数以查找任何差异。如果您乐意进行少量内容更改(例如抗锯齿差异),请使用tiffinfo计算像素总数,然后您可以生成百分比差值。
顺便说一下,对于任何进行简单PDF比较的人来说,结构没有改变,可以使用命令行差异并忽略某些模式,例如:使用GNU diff 2.7:
diff --brief -I xap: -I xapMM: -I /CreationDate -I /BaseFont -I /ID --binary --text
这仍然存在问题,即它并不总是捕获生成的字体名称的更改。
答案 6 :(得分:1)
我们的产品,PDF Comparator - http://www.premediasystems.com/pdfc.html“ - 将非常优雅和高效地完成此任务。它也不是免费的,并且仅是Mac OS X应用程序。
答案 7 :(得分:1)
根据您的需求,转换为文本解决方案将是最简单,最直接的解决方案。我确实认为位图的想法非常酷。
答案 8 :(得分:0)
bluebeam pdf软件将为您做到这一点
答案 9 :(得分:0)
您可以使用Tarkware Pdf Comparer批量处理compare pdf个文件。但它不是免费的,需要Adobe Acrobat。