Contexte
Utiliser LaTeX pour écrire un livre. Lorsqu'un utilisateur achète le livre, le PDF est généré automatiquement.
Problème
Le PDF doit avoir un filigrane qui comprend le nom et les coordonnées de la personne.
Question
Quel logiciel répond aux critères suivants:
- Applique des filigranes cryptés et invisibles à un PDF
- Open source
- Indépendant de la plateforme (Linux, Windows)
- Rapide (marque un PDF de 200 pages en moins d'une seconde)
- Traitement par lots (exclusivement piloté par ligne de commande)
- Résistant aux collusions
- Non fragile (par exemple, PDF -> EPS -> PDF contient toujours le filigrane)
- Bien documenté (montre des exemples d'utilisation)
Idées et ressources
Quelques réflexions et conclusions:
- Filigranes de traitement du langage naturel (NLP).
- Appliquer la stéganographie sur une image sélectionnée au hasard.
- http://openstego.sourceforge.net/cmdline.html
Le problème avec la PNL est que des erreurs grammaticales peuvent être introduites. Le problème avec la stéganographie est que les images proviennent d'un cache d'images, et donc recréer ce cache avec des images filigranées donnera un retard lors de la génération du PDF (je pourrais simplement supprimer une image du cache, mais ce n'est pas une solution élégante).
Je vous remercie!
pdf
encryption
batch
watermark
steganography
Dave Jarvis
la source
la source
Réponses:
J'ai fait quelque chose de similaire il y a quelques années. Il ne répondait pas à tous vos critères "durs". Cela a fonctionné comme ceci:
J'ai placé une zone "cliquable" à peine détectable de taille 2x2 sur un endroit aléatoire à l'une des bordures d'une page PDF aléatoire. Il est peu probable qu'il soit découvert par accident (parmi la charge d'autres hotspots très évidemment cliquables qui étaient de toute façon dans le PDF ...).
Si vous cliquez sur le lien, il vous amènera à une page Web
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
, avec quelques puces "errata". (Ai-je mentionné qu'il87245e386722ad77b4212dbec4f0e912
s'agissait du hachage MD5 du nom de la personne + des données de contact que j'ai conservées dans une table DB? :-)Évidemment, cela ne protège pas contre l'impression + la numérisation + la copie ou contre un cycle de "refrying" PDF. Et elle repose également sur un certain degré de «sécurité par l'obscurité».
Voici comment vous utilisez Ghostscript pour ajouter un tel point d'accès cliquable dans le coin inférieur gauche de la page 1 de random-in.pdf:
Pour agrandir et rendre visible la zone cliquable au-dessus des paramètres de ligne de commande comme ceci:
Encore plus simple serait de générer et de conserver un hachage MD5 du PDF dans votre base de données. Il sera uniq pour chaque PDF que vous créez, en raison des documents UUID et CreationDate et ModDate dans ses métadonnées. Bien sûr, cela ne permet également que de suivre les PDF originaux sous leur forme numérique ...
la source
-dJPEQ=100 -dQFActor=1.0
à la ligne de commande Ghostscript pour vous assurer que vous conserverez 100% de la qualité JPEG existante. Mais non, je n'ai pas remarqué de dégradation de la qualité d'image dans mes fichiers si j'utilisais le paramètre générique de-dPDFSETTINGS=/prepress
lors de la redistillation de fichiers PDF avec Ghostscript ....-dColorImageFilter=/FlateEncode
(qui est un ZIP sans perte) pour remplacer la valeur par défaut=/DCTEncode
(qui est un JPEG avec perte) dans les anciennes versions GS. Depuis GS v7.21, la valeur par défaut est de=/FlateEncode
toute façon ... La même chose que pour la couleur est vraie pour-dGrayImageFilter=...
(-dMonoImageFilter=...
utilise/CCITTFaxEncode
par défaut.)Très difficile et je ne suis pas sûr que cela répondra à toutes vos questions.
Je ne suis pas sûr d'une solution tout-en-un qui puisse le faire ou randomiser.
Cependant, si j'étais chargé de cela, je penserais que le moyen le plus simple est de conserver le document dans un format intermédiaire tel que HTML formaté, ou similaire.
En utilisant un fichier CSS imprimé ou similaire, vous pouvez obtenir une mise en page identique au livre et utiliser un script quelconque pour randomiser l'image, le contenu ou quoi que ce soit et un composant PDF côté serveur qui assemble le document.
Ainsi donc - par exemple, lorsque quelqu'un achète le document, votre script d'achat peut choisir au hasard un numéro qui identifie un mécanisme de protection (par exemple, première image, deuxième image, texte quelque part, etc.), puis générer un lien de téléchargement unique.
Lorsque ce lien de téléchargement est appelé, il vérifie le numéro, effectue l'opération et le compile en pdf puis le télécharge sur le client.
Encore une fois, je sais que ce ne sera pas facile / simple, mais vous ne demandez pas quelque chose de facile et c'est la meilleure façon de penser.
la source