Как мне сделать байтово согласованные документы с 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>] >>

2 ответа

Решение

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

\ Защита \fixedpdfdate{D:20100413000000+00'00' }
\ Pdfinfo{
    /CreationDate (\fixedpdfdate)
     /ModDate (\fixedpdfdate) }

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

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

 /ID [ ] >>
startxref
чтобы: /ID [<0> <0>] >> startxref

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

Посмотрите на -I вариант diff:

   -I PATTERN  --ignore-matching-lines=PATTERN
          Ignore changes whose lines all match PATTERN.
Другие вопросы по тегам