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