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

588
Conley Owens

Когда я дважды запускаю 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>] >> 
4

2 ответа на вопрос

2
Charles Stewart

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

\ Защита \ fixedpdfdate  \ Pdfinfo { / CreationDate (\ fixedpdfdate) / ModDate (\ fixedpdfdate)} 

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

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

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

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

1
mrucci

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

 -I PATTERN --ignore-matching-lines=PATTERN Ignore changes whose lines all match PATTERN. 
Благодарю. Это именно то, что я хотел, за исключением того, что я не могу контролировать / ID. Если я добавлю его в pdftex, ID будет напечатан дважды - один раз, как у меня, и хочет, как этого хочет pdflatex. Conley Owens 14 лет назад 0
Теоретически вам не нужно контролировать идентификатор, потому что вы можете игнорировать шаблоны (то есть `-I" \ ID. * "`). Опция -I не очень хорошо задокументирована, поэтому я не могу рассказать вам больше. mrucci 14 лет назад 0

Похожие вопросы