Как создать побайтно согласованные документы с помощью pdflatex?

Как создать побайтно согласованные документы с помощью pdflatex?

Когда я запускаю pdflatex на одном и том же .tex-файле дважды, он выдает похожие результаты на мой взгляд, но содержимое файла немного отличается (как показывает контрольная сумма md5). Есть ли какой-либо флаг, который я могу передать pdflatex, чтобы сохранить согласованность вывода?

Какие метаданные, чувствительные к окружающей среде, могут быть в моем PDF-файле? Как я могу это контролировать?

Обновлять:Выполнив diff -a, я обнаружил следующее:

> /CreationDate (D:20100413035938Z)
< /ModDate (D:20100413035938Z)
---
> /CreationDate (D:20100413041320Z)
> /ModDate (D:20100413041320Z)
106c106
< /ID [<41D2805AE64117914EDF6E09554EABAE> <41D2805AE64117914EDF6E09554EABAE>] >>
---
> /ID [<071832DAA2E77E13D96460479D9C6664> <071832DAA2E77E13D96460479D9C6664>] >>

решение1

Вы можете изменить содержимое информационного словаря PDF-файла, используя \pdfinfoпримитив Pdftex:

\def\fixedpdfdate{D:20100413000000+00'00'}
\pdfinfo{
    /ДатаСоздания (\fixedpdfdate)
     /ModDate (\fixedpdfdate) }

Поместите это в самом начале документа: есть риск, что словарь будет написан несколькими частями.

Постскриптум Благодарядубликат вопросабудучи заданным на tex.stackexchange.com, я узнал, что /IDзначение, переданное в конце PDF, startxrefвсе еще меняется от вызова к вызову Pdftex. Вы можете затереть содержимое /ID, по-видимому, без вредных последствий: отредактируйте текст PDF между /IDидентификатором и startxrefчем-то вроде:

/ИД [<B74AEC0FBDE0F25D7D2F5099291FEC6F> <B74AEC0FBDE0F25D7D2F5099291FEC6F>] >>
startxref
к:/ID [<0> <0>] >> startxref

Я сомневаюсь, что возможно гарантировать неизменность /ID из Pdftex, но, возможно, это можно сделать в Luatex.

решение2

Взгляните на -Iвариант diff:

   -I PATTERN  --ignore-matching-lines=PATTERN
          Ignore changes whose lines all match PATTERN.

Связанный контент