PDF文件的视觉差异,以确定像素完美[关闭]

问题描述 投票:20回答:4

我需要使用MS Reporting Services重构一些报告(使用Jasper生成)。原始报告的副本以PDF格式提供。要求是使新报告“像素完美”,这是非常麻烦的...

为了让生活更轻松,我希望有一个工具覆盖原始和生成的报告PDF,以测量它们是否完美。

有这样的工具吗?

pdf comparison compare
4个回答
21
投票

最简单,立即可用的方法:使用ImageMagick's compare(在Windows / Linux / Mac和其他设备上也可用)。

它甚至可以比较PDF页面(尽管它使用Ghostscript作为其委托来首先将PDF页面渲染为像素图像):

 compare.exe         ^
    tested.pdf[0]    ^
    reference.pdf[0] ^
   -compose src      ^
    delta.pdf

得到的delta.pdf将每个像素描绘为红色,其在两个比较的PDF页面之间具有不同的颜色。所有相同的像素都是纯白色的。 [0]告诉compare使用每个文件的第一页进行比较(页数从零开始)。

您可以通过以下示例了解其工作原理:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -compose src                   ^
    delta.pdf

以下是相应的页面(转换为缩小的PNG以进行Web显示)。参考页面位于左侧,修改后的页面位于中间位置,“delta-pixel-are-red”图像位于右侧:

通过跳过-compose src参数可以获得略微不同的视觉效果。然后,您将原始文件的像素作为灰色阴影背景(对于上下文),增量像素为红色:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
    delta.pdf

如果您不喜欢像素差异的红色,请使用-highlight-color

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -highlight-color green         ^
    delta.pdf

用于呈现PDF页面的默认分辨率为72 dpi。如果您需要更高的精度,可以使用-density参数切换到300 dpi,如下所示:

 compare.exe                      ^
   -density 300                   ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
    delta.pdf

请注意,切换到更高的密度会减慢进程并创建更大的文件。

您甚至可以为增量图像创建一个* .txt文件,该文件描述每个像素的坐标和相应的颜色值:

 compare                          ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -compose src                   ^
   -highlight-color black         ^
    delta.txt

然后只计算总黑与黑像素的数量(对不起,这是Unix / Linux / MacOSX语法):

 total_pixels=$(( $(cat delta.txt | wc -l) - 1))
 black_pixels=$(( $(grep black delta.txt | wc -l) -1 ))

在上面用于插图的示例中,我得到了

 total_pixels=500990
 black_pixels=8727

当然,“理想”的结果将是

 black_pixels=0

4
投票

diffpdf允许您并排比较两个PDF。


4
投票

这个问题已经被接受了,但我想给我两分钱。我们制作的i-net PDFC与您的场景完美匹配。已经检查了使用另一个报告工具制作的报告与我们的报告软件的输出相匹配。但它更强大。 PDFC没有做的是:检查基于图像的像素完美度,但它使用某些设置检查文档基本上(和视觉上)基于其内容是否相同。比基于像素的纯对比方式更强大。

i-net PDFC可以在视觉上或基于命令行(例如批处理)操作,并与连续集成系统一起使用。可视组件甚至允许半透明覆盖两个PDF文件以使用户检查像素完美。

该软件刚刚完成测试版。试一试,让我们知道您的想法。 (是的。我为制作此产品的公司工作。)


2
投票

我建议使用PDFCreator将报告打印为PNG图像,然后可以使用Paint .NET等图形程序使背景透明,并将两个报告叠加在一起。

在一个或两个图像上使用一些颜色转换(例如,一个是红色,另一个是蓝色),它应该显示你看到差异非常好。

你在这里找到PDFCreator http://de.pdfforge.org/pdfcreator。它完全免费使用。

© www.soinside.com 2019 - 2024. All rights reserved.