我正在编写一个Ruby脚本/应用程序,可以帮助我将LaTeX编译为(至少)PDF。我希望它具有的功能之一是它应该pdflatex
迭代运行,直到PDF收敛为止(我猜应该如此)。
这个想法是将一次迭代中生成的PDF与使用其指纹的前一次迭代中生成的PDF进行比较。特别是,我目前使用Digest::MD5.file(.)
。
现在的问题是,这永远不会收敛。(希望的)罪魁祸首是PDF的时间戳,时间戳至少设置为秒pdflatex
。由于运行时间pdflatex
通常超过一秒钟,因此结果不断变化。也就是说,我希望在某个时间点之后,PDF的时间戳等于时间戳。这个假设可能是错误的。提示表示赞赏。
我该怎么办?到目前为止,我的基本想法是:
您有更多的想法,甚至解决方案吗?解决方案只能使用在Linux上运行的免费软件。这样,只使用Ruby是首选,但是完全可以使用外部软件。
顺便说一句,我不完全了解PDF的编码方式,但我怀疑仅比较包含的文本对我不起作用,因为在以后的迭代中仅图形或链接可能会更改。
可能相关:
这可能不是最防弹的解决方案,但它对我有用:
cat file.pdf | grep -a -v "/CreationDate\|/ModDate\|/ID" | md5sum
Run Code Online (Sandbox Code Playgroud)
或来自Ruby
`cat file.pdf | grep -a -v "/CreationDate\\|/ModDate\\|/ID" | md5sum`.strip
Run Code Online (Sandbox Code Playgroud)
在删除导致假定相同的PDF不同的行之后,这将计算PDF的哈希值。
YMMW,取决于您的PDF创建者。使用diff -a file1.pdf file2.pdf
找出你需要删除什么其他线路。