¿Generar o actualizar un PDF para incluir una marca de agua oculta y cifrada?

¿Generar o actualizar un PDF para incluir una marca de agua oculta y cifrada?

Fondo

Usando LaTeX para escribir un libro. Cuando un usuario compre el libro, el PDF se generará automáticamente.

Problema

El PDF debe tener una marca de agua que incluya el nombre de la persona y la información de contacto.

Pregunta

¿Qué software cumple con los siguientes criterios?

  • Aplica marcas de agua invisibles y cifradas a un PDF
  • Fuente abierta
  • Independiente de plataforma (Linux, Windows)
  • Rápido (marca un PDF de 200 páginas en menos de 1 segundo)
  • Procesamiento por lotes (exclusivamente controlado por línea de comandos)
  • Resistente a ataques de colusión
  • No frágil (por ejemplo, PDF -> EPS -> PDF todavía contiene la marca de agua)
  • Bien documentado (muestra usos de ejemplo)

Ideas y recursos

Algunas reflexiones y hallazgos:

El problema de la PNL es que se pueden introducir errores gramaticales. El problema con la esteganografía es que las imágenes provienen de un caché de imágenes, por lo que recrear ese caché con imágenes con marcas de agua provocará un retraso al generar el PDF (podría simplemente eliminar una imagen del caché, pero esa no es una solución elegante).

¡Gracias!

Respuesta1

Yo hice algo similar hace unos años. No cumplió con todos sus criterios "duros". Funcionó así:

  • Puse un área en la que se puede hacer clic, de tamaño 2x2, apenas detectable, en algún lugar aleatorio en uno de los bordes de una página PDF aleatoria. No es muy probable que se descubra por accidente (entre la carga de otros puntos de acceso muy obvios en los que se puede hacer clic que estaban en el PDF de todos modos...).

  • Si hace clic en el enlace, lo llevará a una página web http://my.own.site/project/87245e386722ad77b4212dbec4f0e912, con algunas viñetas de "erratas" inventadas. (¿Mencioné que 87245e386722ad77b4212dbec4f0e912era el hash MD5 del nombre de la persona + datos de contacto que mantuve almacenado en una tabla de base de datos? :-)

Obviamente, esto no protege contra la impresión+escaneo+creación o contra un ciclo de "refreír" PDF. Y también depende de cierto grado de "seguridad por oscuridad".

Así es como se utiliza Ghostscript para agregar un punto de acceso en el que se puede hacer clic en la esquina inferior izquierda de la página 1 de random-in.pdf:

gs \
 -o random-out.pdf \
 -sDEVICE=pdfwrite \
 -dPDFSETTINGS=/prepress \
 -c "[ /Rect [1 1 3 3]" \
 -c "  /Color [1 1 1]" \
 -c "  /Page 1" \
 -c "  /Action <</Subtype /URI" \
 -c "  /URI (http://my.own.site/87245e386722ad77b4212dbec4f0e912)>>" \
 -c "  /Subtype /Link" \
 -c "  /ANN pdfmark" \
 -f random-in.pdf

Para hacer que el área en la que se puede hacer clic sea más grande y visible, cambie los parámetros anteriores de la línea de comando como este:

 [....]
 -c "[/Rect [1 1 50 50]" \
 -c "  /Color [1 0 0]" \
 [....]

Aún más sencillo sería generar y mantener un hash MD5 del PDF en su base de datos. Será único para cada PDF que cree, debido al UUID de los documentos y a CreationDate y ModDate dentro de sus metadatos. Por supuesto, esto también permite rastrear los archivos PDF originales en su formato digital...

Respuesta2

Es muy difícil y no estoy seguro de que responda todas tus preguntas.

No estoy seguro de una solución todo en uno que pueda hacer esto o aleatorizar.

Sin embargo, si me encargaran esto, pensaría que la forma más sencilla es mantener el documento en un formato intermedio como HTML formateado o similar.

Usando un archivo CSS impreso o similar, puede hacer que el diseño sea idéntico al del libro y usar un script de algún tipo para aleatorizar la imagen, el contenido o cualquier cosa y un componente PDF del lado del servidor que ensambla el documento nuevamente.

Entonces, por ejemplo, cuando alguien compra el documento, su secuencia de comandos de compra puede elegir aleatoriamente un número que identifique un mecanismo de protección (por ejemplo, primera imagen, segunda imagen, texto en algún lugar, etc.) y luego generar un enlace de descarga único.

Cuando se llama a ese enlace de descarga, verifica el número, realiza la operación y lo compila en pdf y luego lo descarga al cliente.

Nuevamente, sé que esto no será fácil ni sencillo, pero no estás pidiendo algo que sea fácil y esta es la mejor manera que se me ocurre.

información relacionada