Şifrelenmiş, gizli bir filigran içerecek şekilde PDF oluşturup güncelleyebilir misiniz?


10

Arka fon

Bir kitap yazmak için LaTeX kullanma. Bir kullanıcı kitabı satın aldığında, PDF otomatik olarak oluşturulur.

Sorun

PDF'de kişinin adını ve iletişim bilgilerini içeren bir filigran olmalıdır.

Soru

Hangi yazılım aşağıdaki ölçütleri karşılar:

  • PDF'ye şifrelenmiş, görünmez filigranlar uygular
  • Açık kaynak
  • Platformdan bağımsız (Linux, Windows)
  • Hızlı (1 saniyenin altında 200 sayfalık PDF'yi işaretler)
  • Toplu işleme (yalnızca komut satırı ile çalıştırılır)
  • Gizli saldırıya dayanıklı
  • Kırılgan olmayan (örn. PDF -> EPS -> PDF hala filigran içerir)
  • İyi belgelenmiş (örnek kullanımları gösterir)

Fikirler ve Kaynaklar

Bazı düşünce ve bulgular:

NLP ile ilgili problem gramer hatalarının ortaya konabilmesidir. Steganografi ile ilgili sorun, görüntülerin bir görüntü önbelleğinden kaynaklanması ve bu nedenle filigranlı görüntülerle bu önbelleğin yeniden oluşturulması, PDF oluşturulurken gecikme sağlayacaktır (sadece bir görüntüyü önbellekten silebilirim, ancak bu zarif bir çözüm değildir).

Teşekkür ederim!


Lütfen gereksinimlerin açıklamasını biraz değiştirin, aksi takdirde belirsizdir. "saptanamayan filigranlar" açıkça istediğiniz şey değildir ... aksi takdirde, gerekirse bunları nasıl kendiniz tespit edersiniz?
Kurt Pfeifle

Tasarlanan sisteminizin amacının tam olarak ne olduğu belli değil: Lisansınız bunu yasaklasa da PDF'nin başka bir kullanıcıya geçip geçmediğini tespit edin. Lisansınız bunu yasaklasa da PDF'nin kağıda yazdırılıp yazdırılmadığını tespit ettiniz mi? İnternet üzerinden belirli bir PDF'nin yolunu ve ne zaman açıldığını izleyin? Veya başka bir şey?
Kurt Pfeifle

@pipitas: PDF'nin kayıtlı bir sürümü izinsiz olarak vahşi olarak yayınlanırsa, kimin yayınladığını bilmek isterim. Ancak insanlar PDF'nin bir filigranı olduğunu görebiliyorsa, filigranın atlaması çok daha kolay hale gelir.
Dave Jarvis

Yanıtlar:


6

Birkaç yıl önce benzer bir şey yaptım. Tüm "zor" kriterlerinizi karşılamadı. Şöyle çalıştı:

  • Rastgele bir PDF sayfasının kenarlarından birinde rastgele bir yere zorlukla algılanabilir, 2x2 punto büyüklüğünde "tıklanabilir" bir alan koydum. Kazayla keşfedilmesi pek olası değildir (yine de PDF'de bulunan çok açık bir şekilde tıklanabilir diğer sıcak noktaların yükü arasında ...).

  • Bağlantıya tıklarsanız, http://my.own.site/project/87245e386722ad77b4212dbec4f0e912bazı "errata" mermi noktaları içeren bir web sayfasına götürürsünüz . (Ben 87245e386722ad77b4212dbec4f0e912bir DB tabloda saklanan tuttum kişinin adı + kişi verilerinin MD5 karma bahsetti mi? :-)

Açıkçası, bu baskı + tarama + ocr-ing veya PDF "refry" döngüsüne karşı koruma sağlamaz. Ve aynı zamanda bir dereceye kadar "anlaşılmaz güvenlik" e de güveniyor.

Random-in.pdf sayfasının sol alt köşesine böyle tıklanabilir bir etkin nokta eklemek için Ghostscript'i nasıl kullanacağınız aşağıda açıklanmıştır:

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

Tıklanabilir alanı daha büyük ve görünür hale getirmek için aşağıdaki gibi komut satırı parametrelerinin üzerinde değişiklik yapın:

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

Daha da basit bir PDF oluşturmak ve veritabanında bir MD5 karma tutmak olacaktır. Meta verilerindeki UUID ve CreationDate ve ModDate belgeleri nedeniyle oluşturduğunuz her PDF için benzersiz olacaktır. Tabii ki, bu sadece orijinal PDF'leri dijital formlarında izlemeye izin veriyor ...


Hiç vahşi bir PDF buldunuz ve bu tekniği kullanarak geri izlediniz mi?
Dave Jarvis

@Dave Jarvis: Evet, bir bakıma yaptım ... Ama "ciddi" bir şey değildi, izlemeye gerçek bir ilgim yoktu. Bunu sadece bir kavram kanıtı olarak yaptım ve yaklaşık 6 ay sonra "izleme" web sunucusunu kapattım. Bir ağ PDF sunucusu içindi, ben bir müşterinin şirketi içinde kurulmuştu. "İzleyici" yukarıda açıklananla benzerdi, ancak tam sayfa tıklanabilir bir alan kullandı. Ben sadece apache günlük dosyasındaki "hit" sayısını izledim ....
Kurt Pfeifle

Güzel bir fikir, ancak GhostScript'in böyle bir PDF üzerinde çalıştırılmasının içerdiği örneklenmiş görüntüleri bozabileceğini unutmayın, çünkü GhostScript bunların sıkıştırmasını açmayı desteklemez (girişte sıkıştırılmış JPEG tarzı görüntülerden bilgi kaybeder) ve eğilim Tüm resimlere JPEG stili sıkıştırma uygula (sadece açılmış olanlar dahil) ...
SamB

@SamB: Ben düşünüyorum ekleyebilir -dJPEQ=100 -dQFActor=1.0emin JPEG kalitesi Var olan% 100'ünü korumak edeceğiz yapmak Ghostscript komutsatırına. Ama hayır, görüntü kalitesinde herhangi bir küçültücü fark ettik benim ben jenerik ayarı kullanıldığında dosyaları -dPDFSETTINGS=/prepress.... Ghostscript'te ile herhangi PDF'leri yeniden damıtılması sırasında
Kurt Pfeifle

[devamı] Ve hayır, sadece Ghostscript'ten alınan görüntüler için sunulan JPEG sıkıştırması değil - eski GS sürümlerinde -dColorImageFilter=/FlateEncodevarsayılanı =/DCTEncode( kayıp JPEG'dir) geçersiz kılmak için ( kayıpsız ZIP) kullanabilirsiniz . GS varsayılan v7.21 beri =/FlateEncodezaten ... Aynı için de geçerlidir renk için olduğu gibi -dGrayImageFilter=...( -dMonoImageFilter=...kullanımları /CCITTFaxEncodevarsayılan olarak.)
Kurt Pfeifle

1

Çok zor bir soru ve bunun tüm sorularınıza cevap vereceğinden emin değilim.

Bunu yapabilen veya rastgele yapabilen hepsi bir arada çözümden emin değilim.

Ancak, bununla görevlendirildiysem, en kolay yolun belgeyi biçimlendirilmiş HTML veya benzeri bir ara formatta tutmak olduğunu düşünürdüm.

Basılı bir CSS dosyası veya benzerini kullanarak, mizanpajın kitapla aynı olmasını sağlayabilir ve resmi, içeriği veya herhangi bir şeyi ve belgeyi tekrar birleştiren bir sunucu tarafı PDF bileşenini rastgele sıralamak için bir tür komut dosyası kullanabilirsiniz.

bu nedenle - örneğin, belgeyi satın alan biri üzerinde, satın alma komut dosyanız rastgele bir koruma mekanizmasını (örn. ilk resim, ikinci resim, bir yerdeki metin vb.) tanımlayan bir numara seçebilir ve ardından benzersiz bir indirme bağlantısı oluşturabilir.

Bu indirme bağlantısı çağrıldığında, numarayı kontrol eder, işlemi gerçekleştirir ve pdf'ye derler ve ardından istemciye indirir.

Yine, bunun kolay / doğrudan olmayacağını biliyorum, ama kolay bir şey istemiyorsunuz ve bu benim düşünebileceğim en iyi yol.


@Dave Jarvis - Ne yapmaya çalıştığınızı tam olarak anlıyorum ... dediğim gibi, en iyi çözümden emin değilim, ama söylediğim en azından işe yarayacak ... kolay olmaktan çok uzak.
William Hilsum

@Dave Jarvis - Söylemeye çalıştığım / geçmeye çalıştığım şey, istediğini yapmak için hepsini bir arada / kolay bir şekilde hiç görmedim, ancak PHP / ASP.Net'i kullanarak komut dosyaları yazmak / üçüncü tarafları aramak daha kolay bileşenler. HTML'de tüm belgeyi doğru / tam olarak biçimlendirdiyseniz, dönüştürmek için bir PDF bileşeni kullanmanın çok kolay olacağını düşünürüm ... Örneğin, sayfa 31'de 100 sayfa ve bir resim olduğunu varsayalım, 1-30 sayfalar PDF ve 32-100 sayfalar PDF olabilir, sayfa 31 html biçiminde (kitabın geri kalanının stiline göre) oluşturulur ve biçimlendirilirse, 1/2
William Hilsum kullanabilirsiniz

İlk PDF'i alacak, html sayfasını gizleyecek, ikinci PDF'yi alacak ve hepsini birleştiren yeni bir pdf oluşturacak pdf bileşeni. Oluşturulan sayfa komut dosyaları çağırabilir, steganografi (fiilden emin değilim!) Veya istediğiniz herhangi bir şeyi gerçekleştirebilir ... birçok (ücretsiz ve ücretli) pdf bileşeni vardır - bu örneğin bir tanesidir ... componentone.com/SuperProducts / PDF Umarım bu, karşılaşmaya çalıştığım şeyi biraz daha açık hale getirir - açıklamak çok zor. 2/2
William Hilsum

@Dave Jarvis - ehh, tam olarak değil ... Dediğim gibi, açıklamak çok zor .... Bazı PDF bileşenleri CSS / baskı stilleri ile birlikte şaşırtıcı. Örneğin, Moodle'a bakın. Bir web sayfasını tam olarak biçimlendirmek ve çıktıyı kitap gibi göstermek / stil izlemek mümkündür. Daha sonra , sonuçta nasıl görünmesi gerektiği gibi TAM olarak dışa aktarmak / kaydetmek için bir PDF bileşeni kullanabilirsiniz . İhtiyacınız olan resmi kolayca oluşturabilir ve metne sahip olabilir ve tek bir PDF dosyası olarak (son kullanıcıya sorunsuz bir şekilde) monte edebilirsiniz. Ben sadece ne istediğinizi almak için en kolay yolu olduğunu düşünüyorum gibi web / php / asp.net söz.
William Hilsum

@Dave Jarvis: Sanırım pdfTeX kullanmıyorsunuz? (Ya da pdf-> ps-> pdf dönüşümü yapan ve süreçteki örnek görüntüleri bozan kullanıcılar hakkında daha mı endişeleniyordunuz ?). Neyse, PS> pdf dönüştürme yapar GhostScript sıkıştırılmış formda JPEG tarzı görüntüleri korumak için akıllı yeterli değildir ve otomatik giriş meydana gelen herhangi görüntülere JPEG tarzı sıkıştırma uygulamak olmaya eğilimli olduğu tipik degrade görüntüleri. (Distiller görünüşte olabilir yalnız JPEG tarzı görüntüleri bırakmak için talimat, ama herkes aslında var?)
SAMB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.