如果输入的 tex 文件没有变化,如何配置 pdflatex 来输出二进制等效 PDF?

如果输入的 tex 文件没有变化,如何配置 pdflatex 来输出二进制等效 PDF?

我从 LaTeX 源文件构建 PDF 文档,作为静态 Dwebsite 生成,但每次运行 pdflatex 都会输出一个文件,该文件的哈希值会不同IFPS 内容 ID。这会触发根 CID 的虚假再生。是否可以pdflatex生成与之前运行二进制等效的 PDF(假设输入文件未更改),以便 PDF 输出哈希为相同的 CID?

pdflatex 手册页没有列出任何看似相关的选项。每http://theoval.cmp.uea.ac.uk/~nlct/latex/pdfdoc/pdfdoc/pdfdoc.html,我在 LaTeX 文件的顶部添加了类似这样的内容:

\pdfinfo{
   /Producer (pdfTeX)
   /Author ()
   /Title  ()
   /CreationDate (D:20040502195600)
   /ModDate (D:20040502195600)
   /PTEX.Fullbanner (Generated with pdfTeX)
}

比较 hexdiff 中的文件会显示 /ID 属性中的差异,该属性看起来像 GUID。该属性似乎无法通过 \pdfinfo 块进行修改。是否有任何方法可以硬编码或禁用该属性的生成?

答案1

您可以通过设置环境变量来设置可重现的行为SOURCE_DATE_EPOCH,并FORCE_SOURCE_DATE参见texdoc pdftex第 4 节。

SOURCE_DATE_EPOCH应该是你想要修复日期的自 1970 年以来的秒数,并且FORCE_SOURCE_DATE应该是 1

您还可以从 tex 文档中控制这些字段,例如\pdftrailerid控制末尾的 id 并 \pdfsuppressptexinfo=-1抑制信息信息的打印。

相关内容