关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
7年前关闭。
Improve this question
我需要使用 MS Reporting Services 重构一些报告(使用 Jasper 生成)。原始报告的副本以 PDF 格式提供。要求是让新报告“像素完美”,这很麻烦......
为了让生活更轻松,我想要一个工具来覆盖原始和生成的报告 PDF,以测量它们是否像素完美。
有这样的工具吗?
最佳答案
执行此操作的最简单、立即可用的方法:使用 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
注意,切换到更高的密度会减慢进程并创建更大的文件。
您甚至可以为 delta 图像创建一个 *.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
关于pdf - PDF 文件的视觉差异以确定像素完美度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460577/