Hintergrund
Mit LaTeX ein Buch schreiben. Wenn ein Benutzer das Buch kauft, wird das PDF automatisch generiert.
Problem
Das PDF sollte ein Wasserzeichen enthalten, das den Namen und die Kontaktinformationen der Person enthält.
Frage
Welche Software erfüllt die folgenden Kriterien:
- Wendet verschlüsselte, unsichtbare Wasserzeichen auf ein PDF an
- Open Source
- Plattformunabhängig (Linux, Windows)
- Schnell (markiert ein 200-seitiges PDF in weniger als 1 Sekunde)
- Stapelverarbeitung (ausschließlich befehlszeilengesteuert)
- Kollusionsangriffsresistent
- Nicht zerbrechlich (z. B. PDF -> EPS -> PDF enthält weiterhin das Wasserzeichen)
- Gut dokumentiert (zeigt Beispielverwendungen)
Ideen & Ressourcen
Einige Gedanken und Erkenntnisse:
- Wasserzeichen für die Verarbeitung natürlicher Sprache (NLP).
- Wenden Sie Steganographie auf ein zufällig ausgewähltes Bild an.
- http://openstego.sourceforge.net/cmdline.html
Das Problem mit NLP ist, dass grammatikalische Fehler eingeführt werden können. Das Problem bei der Steganografie besteht darin, dass die Bilder aus einem Bildcache stammen. Wenn Sie diesen Cache also mit Bildern mit Wasserzeichen neu erstellen, verzögert sich die Erstellung der PDF-Datei (ich könnte nur ein Bild aus dem Cache löschen, aber das ist keine elegante Lösung).
Vielen Dank!
pdf
encryption
batch
watermark
steganography
Dave Jarvis
quelle
quelle
Antworten:
Ich habe vor ein paar Jahren etwas Ähnliches gemacht. Es hat nicht alle Ihre "harten" Kriterien erfüllt. Es hat so funktioniert:
Ich habe einen kaum erkennbaren, anklickbaren Bereich mit einer Größe von 2 x 2 Punkten an einer zufälligen Stelle an einem der Ränder einer zufälligen PDF-Seite platziert. Es ist nicht sehr wahrscheinlich, dass es zufällig entdeckt wird (unter der Last anderer sehr offensichtlich anklickbarer Hotspots, die sowieso im PDF enthalten waren ...).
Wenn Sie auf den Link klicken, gelangen Sie zu einer Webseite
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
mit einigen erfundenen "Errata" -Aufzählungspunkten. (Habe ich erwähnt, dass dies87245e386722ad77b4212dbec4f0e912
der MD5-Hash des Namens + der Kontaktdaten der Person war, den ich in einer DB-Tabelle gespeichert habe? :-)Dies schützt natürlich nicht vor Drucken + Scannen + Aufrufen oder vor einem PDF- "Refrying" -Zyklus. Und es beruht auch auf einem gewissen Grad an "Sicherheit durch Dunkelheit".
So verwenden Sie Ghostscript, um einen solchen anklickbaren Hotspot in der unteren linken Ecke von Seite 1 von random-in.pdf hinzuzufügen:
Um den anklickbaren Bereich größer und sichtbar zu machen, ändern Sie die Befehlszeilenparameter wie folgt:
Noch einfacher wäre es, einen MD5-Hash der PDF-Datei zu generieren und in Ihrer Datenbank zu speichern. Aufgrund der UUID der Dokumente sowie des CreationDate und ModDate in den Metadaten ist es für jedes von Ihnen erstellte PDF eindeutig. Dies ermöglicht natürlich auch nur die Verfolgung der Original-PDFs in ihrer digitalen Form ...
quelle
-dJPEQ=100 -dQFActor=1.0
die Ghostscript-Befehlszeile erweitern, um sicherzustellen, dass Sie die vorhandene JPEG-Qualität zu 100% beibehalten. Aber nein, ich habe keine Verschlechterung der Bildqualität in meinen Dateien bemerkt, wenn ich die generische Einstellung-dPDFSETTINGS=/prepress
beim erneuten Destillieren von PDFs mit Ghostscript verwendet habe ....-dColorImageFilter=/FlateEncode
(die verlustfreie ZIP-Datei) verwenden, um die Standardeinstellung=/DCTEncode
(die verlustbehaftetes JPEG ist) in älteren GS-Versionen zu überschreiben . Da GS den Standard v7.21 ist=/FlateEncode
sowieso ... Die gleiche wie für Farbe gilt für-dGrayImageFilter=...
(-dMonoImageFilter=...
Anwendungen/CCITTFaxEncode
standardmäßig aktiviert .)Sehr schwer und ich bin nicht sicher, ob dies alle Ihre Fragen überhaupt beantworten wird.
Ich bin mir nicht sicher, ob eine All-in-One-Lösung dies kann oder zufällig ist.
Wenn ich jedoch damit beauftragt würde, würde ich denken, dass der einfachste Weg darin besteht, das Dokument in einem Zwischenformat wie formatiertem HTML oder ähnlichem zu halten.
Wenn Sie eine gedruckte CSS-Datei oder ähnliches verwenden, können Sie das Layout mit dem Buch identisch machen und ein Skript verwenden, um das Bild, den Inhalt oder etwas anderes zufällig auszuwählen, sowie eine serverseitige PDF-Komponente, die das Dokument wieder zusammensetzt.
Wenn also beispielsweise jemand das Dokument kauft, kann Ihr Kaufskript zufällig eine Nummer auswählen, die einen Schutzmechanismus identifiziert (z. B. erstes Bild, zweites Bild, Text irgendwo usw.), und dann einen eindeutigen Download-Link generieren.
Wenn dieser Download-Link aufgerufen wird, überprüft er die Nummer, führt den Vorgang aus, kompiliert ihn als PDF und lädt ihn dann auf den Client herunter.
Auch hier weiß ich, dass dies nicht einfach / unkompliziert sein wird, aber Sie fragen nicht nach etwas, das einfach ist, und dies ist der beste Weg, den ich mir vorstellen kann.
quelle