Latar Belakang
Menggunakan LaTeX untuk menulis buku. Ketika pengguna membeli buku, PDF akan dibuat secara otomatis.
Masalah
PDF harus memiliki tanda air yang menyertakan nama orang tersebut dan informasi kontak.
Pertanyaan
Perangkat lunak apa yang memenuhi kriteria berikut:
- Menerapkan tanda air terenkripsi dan tak terlihat ke PDF
- Sumber Terbuka
- Platform independen (Linux, Windows)
- Cepat (menandai 200 halaman PDF dalam waktu kurang dari 1 detik)
- Pemrosesan batch (khusus didorong oleh perintah)
- Tahan serangan kolusi
- Non-rapuh (mis., PDF -> EPS -> PDF masih mengandung tanda air)
- Didokumentasikan dengan baik (menunjukkan contoh penggunaan)
Ide & Sumber Daya
Beberapa pemikiran dan temuan:
- Tanda air natural language processing (NLP).
- Terapkan steganografi pada gambar yang dipilih secara acak.
- http://openst.ausourceforge.net/cmdline.html
Masalah dengan NLP adalah bahwa kesalahan tata bahasa dapat diperkenalkan. Masalah dengan steganografi adalah bahwa gambar-gambar tersebut bersumber dari cache gambar, dan dengan demikian menciptakan kembali cache tersebut dengan gambar-gambar yang diberi watermark akan menyebabkan penundaan saat membuat PDF (saya hanya bisa menghapus satu gambar dari cache, tetapi itu bukan solusi yang elegan).
Terima kasih!
pdf
encryption
batch
watermark
steganography
Dave Jarvis
sumber
sumber
Jawaban:
Saya melakukan sesuatu yang serupa beberapa tahun yang lalu. Itu tidak memenuhi semua kriteria "keras" Anda. Ini berfungsi seperti ini:
Saya menempatkan area "diklik" berukuran hampir 2x2 titik yang dapat dideteksi pada beberapa tempat acak di salah satu perbatasan halaman PDF acak. Sangat tidak mungkin ditemukan secara tidak sengaja (di antara banyak hotspot lain yang sangat jelas dapat diklik yang ada dalam PDF ...).
Jika Anda mengklik tautannya, itu akan membawa Anda ke halaman web
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
, dengan beberapa poin bullet "errata". (Apakah saya menyebutkan bahwa87245e386722ad77b4212dbec4f0e912
itu adalah MD5 hash dari nama orang + data kontak yang saya simpan disimpan dalam tabel DB? :-)Jelas, ini tidak melindungi terhadap pencetakan + pemindaian + pemutaran atau terhadap siklus "refrying" PDF. Dan itu juga bergantung pada beberapa tingkat "keamanan oleh ketidakjelasan".
Inilah cara Anda menggunakan Ghostscript untuk menambahkan hotspot yang dapat diklik ke sudut kiri bawah halaman 1 dari random-in.pdf:
Untuk membuat area yang dapat diklik lebih besar dan perubahan yang terlihat di atas parameter commandline seperti ini:
Yang lebih sederhana lagi adalah membuat dan menyimpan hash MD5 dari PDF di basis data Anda. Ini akan menjadi unik untuk setiap PDF yang Anda buat, karena dokumen UUID dan CreationDate dan ModDate di dalam meta data-nya. Tentu saja, ini juga hanya memungkinkan untuk melacak PDF asli dalam bentuk digital mereka ...
sumber
-dJPEQ=100 -dQFActor=1.0
perintah Ghostscript untuk memastikan Anda akan mempertahankan 100% kualitas JPEG yang ada. Tapi tidak, saya tidak melihat ada penurunan kualitas gambar di file saya jika saya menggunakan pengaturan umum-dPDFSETTINGS=/prepress
ketika kembali menyaring setiap PDF dengan Ghostscript ....-dColorImageFilter=/FlateEncode
(yang merupakan lossless ZIP) untuk mengganti default=/DCTEncode
(yang merupakan JPEG lossy) di versi GS yang lebih lama. Karena GS v7.21 defaultnya adalah=/FlateEncode
... Sama seperti untuk warna juga berlaku untuk-dGrayImageFilter=...
(-dMonoImageFilter=...
digunakan/CCITTFaxEncode
secara default.)Sangat sulit dan saya tidak yakin ini akan menjawab semua pertanyaan Anda sama sekali.
Saya tidak yakin dengan solusi all-in-one yang dapat melakukan ini, atau secara acak.
Namun, jika saya ditugaskan dengan ini, saya akan berpikir bahwa cara termudah adalah menyimpan dokumen dalam format perantara seperti HTML yang diformat, atau sejenisnya.
Menggunakan file CSS cetak atau sejenisnya, Anda bisa mendapatkan tata letak yang identik dengan buku dan menggunakan semacam skrip untuk mengacak gambar, konten atau apa pun dan komponen PDF sisi server yang merakit dokumen kembali.
jadi - misalnya, pada seseorang yang membeli dokumen, skrip pembelian Anda dapat secara acak memilih nomor yang mengidentifikasi mekanisme perlindungan (misalnya gambar pertama, gambar kedua, teks di suatu tempat dll.), dan kemudian menghasilkan tautan unduhan unik.
Ketika tautan unduhan itu dipanggil, ia memeriksa nomornya, melakukan operasi dan mengkompilasi ke pdf kemudian mengunduhnya ke klien.
Sekali lagi, saya tahu ini tidak akan mudah / lurus ke depan, tetapi Anda tidak meminta sesuatu yang mudah dan ini adalah cara terbaik yang dapat saya pikirkan.
sumber