【发布时间】:2012-04-17 05:35:58
【问题描述】:
我正在编写一个库来使用虾报告生成 PDF 报告。
我希望我的 gem 具有的功能之一是能够提供测试报告生成的方法。
问题是两个视觉上相同的 PDF 可以有不同的文件。
有没有办法确保 2 个视觉上相等的 PDF 在文件中具有相同的位?类似于 XML 规范化。
【问题讨论】:
标签: pdf
我正在编写一个库来使用虾报告生成 PDF 报告。
我希望我的 gem 具有的功能之一是能够提供测试报告生成的方法。
问题是两个视觉上相同的 PDF 可以有不同的文件。
有没有办法确保 2 个视觉上相等的 PDF 在文件中具有相同的位?类似于 XML 规范化。
【问题讨论】:
标签: pdf
'视觉平等'(或视觉相似性':每个页面只有一小部分像素不同)即使 PDF 对象的内部结构非常不同,也可能出现 2 个不同的 PDF . (想想一页“文本”,它可能使用真正的字体,或者可能对每个字形的形状使用“轮廓”矢量图形......)
这意味着这种相等性只能通过将两个文件以相同的分辨率渲染到页面图像然后逐个像素地比较两个图像集来确定。比较的结果可能是另一个像素图像,将所有不同的像素显示为红色,或者根据您的喜好,仅显示不一致的像素数。
在ghostscript、pdftk 和ImageMagick 的帮助下,我在这个答案中描述了一种可编写脚本的方法:
或者,你可以看看
(适用于 Linux、Unix、Mac OS X 和 Windows):它还可以直观地比较两个 PDF 文件。
[您的字面问题是这样的:“有没有办法确保 2 个视觉上相等的 PDF 在文件中具有相同的位?” -- 但是,我不确定您是否真的是这样的-因此我的上述答案。否则我不得不说:如果 两个 PDF 文件在视觉上是相等的,只需生成它们各自的 MD5sum 以确定它们在每个文件中是否具有相同的位...]
【讨论】: