我需要比较大量的PDF文件才能获得光学内容.由于PDF文件是在不同平台上创建的,并且使用不同版本的软件,因此存在结构差异.例如:
文本的分块可以是不同的
写入顺序可以不同
位置可以有些像素不同
它应该像人类而不是内部结构那样比较内容.我想测试我们使用的不同版本的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之间的主要差异(例如分页)导致混乱
位图不可缩放
仅适用于黑白文本和图表
没有易于使用的GUI
我一直在寻找一种在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
(可以在get-diff-pdf.sh中找到Ubuntu Natty的构建步骤)
据我所知,它基本上覆盖了pdf(s)中每个页面的文本/图形,让您轻松查看是否有任何变化......
干杯!
我们还使用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