Oli*_*gel 21 pdf comparison compare
我需要使用MS Reporting Services重构一些报告(使用Jasper生成).原始报告的副本以PDF格式提供.要求是使新报告"像素完美",这是非常麻烦的...
为了让生活更轻松,我希望有一个工具覆盖原始和生成的报告PDF,以测量它们是否完美.
有这样的工具吗?
Kur*_*fle 21
最简单,立即可用的方法:使用ImageMagickcompare
(在Windows/Linux/Mac和其他设备上也可用).
它甚至可以比较PDF页面(尽管它使用Ghostscript作为其委托来首先将PDF页面渲染为像素图像):
compare.exe ^
tested.pdf[0] ^
reference.pdf[0] ^
-compose src ^
delta.pdf
Run Code Online (Sandbox Code Playgroud)
结果delta.pdf
将每个像素描绘为红色,其在两个比较的PDF页面之间具有不同的颜色.所有相同的像素都是纯白色的.该[0]
告知compare
使用每个文件的第一页进行比较(页计数从零开始).
您可以通过以下示例了解其工作原理:
compare.exe ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
-compose src ^
delta.pdf
Run Code Online (Sandbox Code Playgroud)
以下是相应的页面(转换为缩小的PNG以进行Web显示).参考页面位于左侧,修改后的页面位于中间位置,"delta-pixel-are-red"图像位于右侧:
跳过-compose src
参数可以获得略微不同的视觉效果.然后,您将原始文件的像素作为灰色阴影背景(对于上下文),增量像素为红色:
compare.exe ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
delta.pdf
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢像素差异的红色,请使用-highlight-color
:
compare.exe ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
-highlight-color green ^
delta.pdf
Run Code Online (Sandbox Code Playgroud)
用于呈现PDF页面的默认分辨率为72 dpi.如果您需要更高的精度,可以使用如下-density
参数切换到300 dpi :
compare.exe ^
-density 300 ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
delta.pdf
Run Code Online (Sandbox Code Playgroud)
请注意,切换到更高的密度会减慢进程并创建更大的文件.
您甚至可以为增量图像创建一个*.txt文件,该文件描述每个像素的坐标和相应的颜色值:
compare ^
http://qtrac.eu/boson1.pdf[1] ^
http://qtrac.eu/boson2.pdf[1] ^
-compose src ^
-highlight-color black ^
delta.txt
Run Code Online (Sandbox Code Playgroud)
然后只计算总黑与黑像素的数量(对不起,这是Unix/Linux/MacOSX语法):
total_pixels=$(( $(cat delta.txt | wc -l) - 1))
black_pixels=$(( $(grep black delta.txt | wc -l) -1 ))
Run Code Online (Sandbox Code Playgroud)
在上面用于插图的示例中,我得到了
total_pixels=500990
black_pixels=8727
Run Code Online (Sandbox Code Playgroud)
当然,"理想"的结果将是
black_pixels=0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5891 次 |
最近记录: |