使输出pdf文件二进制相同

时间:2014-08-15 00:10:08

标签: pdf matplotlib pdf-generation diff

我正在使用Matplotlib生成大批地块(数量级为数千)。我会经常在产生图的代码中调整一些小问题,但这些修改通常只会影响一些图。

当我将新图表推送到公共存储库时,我想使用rsyncdiff之类的内容来识别实际更改的图表。遗憾的是,即使 nothing 关于绘图脚本的更改,运行diff new_plot.pdf old_plot.pdf 始终也会将文件标识为不同。

当我输出到.png时,文件是相同的。当我输出到.eps时输出几乎相同,但运行差异显示已经交换了几行。我怀疑差异有两个原因:

  1. pdf存储元数据,包括时间戳。
  2. 即使没有相同的描述,某些矢量图形看起来也可能相同(即,可以从右到左或从左到右绘制线条)。我希望matplotlib是确定性的,但它在.eps实例中显然做的事情略有不同,所以我猜不是。
  3. 是否有某种方法可以关闭.pdf元数据,并从matplotlib强制使用更具确定性的绘图方法,或者将文件提供给将其视为相同的差异工具?

1 个答案:

答案 0 :(得分:1)

example包含如何使用PdfPages设置创建和修改日期。 我已经尝试了代码并执行了diff而我的pdf数字之间没有任何区别。

PS:最后两行会影响文件的差异,因此请尝试使用您想要的固定值附加它们:

d['CreationDate'] = datetime.datetime(2009, 11, 13)
d['ModDate'] = datetime.datetime.today()

d['CreationDate'] = datetime.datetime(2014, 9, 6)
d['ModDate'] = datetime.datetime(2014, 9, 6)