Antecedentes
Usando LaTeX para escribir un libro. Cuando un usuario compra 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 encriptadas a un PDF
- Fuente abierta
- Plataforma independiente (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 al ataque de colusión
- No frágil (p. Ej., PDF -> EPS -> PDF todavía contiene la marca de agua)
- Bien documentado (muestra usos de ejemplo)
Ideas y recursos
Algunos pensamientos y hallazgos:
- Marcas de agua de procesamiento del lenguaje natural (PNL).
- Aplicar esteganografía en una imagen seleccionada al azar.
- http://openstego.sourceforge.net/cmdline.html
El problema con la PNL es que pueden introducirse 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 impartirá un retraso al generar el PDF (podría eliminar una imagen del caché, pero esa no es una solución elegante).
¡Gracias!
pdf
encryption
batch
watermark
steganography
Dave Jarvis
fuente
fuente
Respuestas:
Hice algo similar hace unos años. No cumplió con todos sus criterios "duros". Funcionó así:
Puse un área "cliqueable" de 2x2 puntos de tamaño 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 que se pueden hacer clic 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é que87245e386722ad77b4212dbec4f0e912
era el hash MD5 del nombre de la persona + datos de contacto que guardé almacenados en una tabla de DB? :-)Obviamente, esto no protege contra la impresión + escaneo + ocultamiento o contra un ciclo de "refrying" de PDF. Y también se basa en cierto grado de "seguridad por oscuridad".
Así es como usa 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:
Para hacer que el área en la que se puede hacer clic sea más grande y visible, cambie los parámetros de la línea de comandos como este:
Aún más simple sería generar y mantener un hash MD5 del PDF en su base de datos. Será uniq para cada PDF que cree, debido a los documentos UUID y CreationDate y ModDate dentro de sus metadatos. Por supuesto, esto también solo permite rastrear los PDF originales en su forma digital ...
fuente
-dJPEQ=100 -dQFActor=1.0
a la línea de comandos de Ghostscript para asegurarse de que mantendrá el 100% de la calidad JPEG existente. Pero no, no me he dado cuenta de ninguna degradación de la calidad de imagen en mis archivos si utiliza la configuración genérica de-dPDFSETTINGS=/prepress
cuando se re-destilación de los PDF con Ghostscript ....-dColorImageFilter=/FlateEncode
(que es ZIP sin pérdida) para anular el valor predeterminado=/DCTEncode
(que es JPEG con pérdida) en versiones anteriores de GS. Desde GS v7.21 El valor predeterminado es=/FlateEncode
de todos modos ... Lo mismo que para el color es cierto para-dGrayImageFilter=...
(-dMonoImageFilter=...
usos/CCITTFaxEncode
de forma predeterminada.)Muy difícil y no estoy seguro de que esto responda a todas sus preguntas.
No estoy seguro de una solución todo en uno que pueda hacer esto, o aleatorizar.
Sin embargo, si se me encargara esto, pensaría que la forma más fácil es mantener el documento en un formato intermedio, como HTML formateado o similar.
Usando un archivo CSS de impresión o similar, puede hacer que el diseño sea idéntico al 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.
entonces, por ejemplo, cuando alguien compra el documento, su script de compra puede elegir aleatoriamente un número que identifica 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 compila en PDF y luego lo descarga al cliente.
Una vez más, sé que esto no será fácil / directo, pero no está pidiendo algo que sea fácil y esta es la mejor manera en que puedo pensar.
fuente