pdf - PDF 文件的视觉差异以确定像素完美度

标签 pdf comparison compare

关闭。这个问题不满足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'图像在右边:

first page second page delta image

跳过 -compose src 可以获得略有不同的视觉效果范围。然后,您将获得原始文件的像素作为灰色阴影背景(用于上下文),增量像素为红色:
 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
    delta.pdf

first page second page 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/

相关文章:

pdf - QWeb pdf 报告 odoo 10

c# - 在页面上预览生成的 PDF

objective-c - 警告 :Comparison of constant 8 with expression of type XXXX is always false

c# - 排序 C++ vector 和 C# 列表

php - 比较两个字符串以获得唯一性百分比

python - 连接 PDF 从另一个 python 脚本调用 join.py OSX 脚本并传递参数

javascript - 使用 javascript 或 jquery 打印 pdf

java - 为什么HashMap的get()在Java中会同时比较hash值和key?

C#:如何在保存之前对 XML 进行排序和缩进?

php - 准备使用php脚本来比较mysql表