¿Cómo produzco documentos coherentes byte a byte con pdflatex?

¿Cómo produzco documentos coherentes byte a byte con pdflatex?

Cuando ejecuto pdflatex en el mismo archivo .tex dos veces, produce resultados similares a mis ojos, pero el contenido del archivo es ligeramente diferente (como se revela con una suma de comprobación md5). ¿Hay alguna bandera que pueda pasar a pdflatex que mantenga la coherencia de la salida?

¿Qué metadatos sensibles al entorno podrían estar en mi pdf? ¿Cómo puedo controlarlo?

Actualizar:Haciendo un diff -a, encuentro lo siguiente:

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

Respuesta1

Puede cambiar el contenido del diccionario de información del PDF utilizando \pdfinfola primitiva de Pdftex:

\def\fixedpdfdate{D:20100413000000+00'00'}
\pdfinfo{
    /FechaDeCreación (\fechapdffija)
     /ModDate (\fixedpdfdate) }

Coloque esto justo al comienzo del documento: existe cierto riesgo de que el diccionario se escriba en varios fragmentos.

Posdata Gracias aun duplicado de la preguntaCuando me preguntaron en tex.stackexchange.com, descubrí que el /IDvalor pasado al final del PDF startxrefaún cambia de una invocación a otra de Pdftex. Puede modificar el contenido de /ID, aparentemente sin efectos nocivos: edite el texto del PDF entre el /IDidentificador y startxrefalgo como:

/ID [<B74AEC0FBDE0F25D7D2F5099291FEC6F> <B74AEC0FBDE0F25D7D2F5099291FEC6F>] >>
inicioxref
a:/ID [<0> <0>] >> startxref

Dudo que sea posible garantizar que /ID no cambie desde Pdftex, pero tal vez se pueda hacer en Luatex.

Respuesta2

Echa un vistazo a la -Iopción de diff:

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

información relacionada