tło
Korzystanie z LaTeX do napisania książki. Gdy użytkownik kupi książkę, plik PDF zostanie wygenerowany automatycznie.
Problem
Plik PDF powinien mieć znak wodny zawierający imię i nazwisko oraz dane kontaktowe.
Pytanie
Jakie oprogramowanie spełnia następujące kryteria:
- Stosuje zaszyfrowane, niewidoczne znaki wodne do pliku PDF
- Otwarte źródło
- Niezależny od platformy (Linux, Windows)
- Szybki (oznacza 200 stron PDF w mniej niż 1 sekundę)
- Przetwarzanie wsadowe (wyłącznie z poziomu wiersza poleceń)
- Odporny na zmowy
- Nietrwały (np. PDF -> EPS -> PDF nadal zawiera znak wodny)
- Dobrze udokumentowane (pokazuje przykładowe zastosowania)
Pomysły i zasoby
Kilka przemyśleń i ustaleń:
- Znaki wodne przetwarzania języka naturalnego (NLP).
- Zastosuj steganografię do losowo wybranego obrazu.
- http://openstego.sourceforge.net/cmdline.html
Problem z NLP polega na tym, że można wprowadzić błędy gramatyczne. Problem ze steganografią polega na tym, że obrazy pochodzą z pamięci podręcznej obrazów, a więc odtworzenie tej pamięci podręcznej ze zdjęciami ze znakiem wodnym spowoduje opóźnienie podczas generowania pliku PDF (mógłbym po prostu usunąć jeden obraz z pamięci podręcznej, ale to nie jest eleganckie rozwiązanie).
Dziękuję Ci!
pdf
encryption
batch
watermark
steganography
Dave Jarvis
źródło
źródło
Odpowiedzi:
Zrobiłem coś podobnego kilka lat temu. Nie spełniał wszystkich twoich „twardych” kryteriów. Działa to tak:
Umieściłem ledwo wykrywalny obszar „klikalny” o rozmiarze 2x2 punktu w jakimś losowym miejscu na jednym z marginesów losowej strony PDF. Jest mało prawdopodobne, że zostanie on wykryty przypadkowo (pośród innych bardzo oczywistych klikalnych punktów dostępowych, które i tak były w pliku PDF ...).
Kliknięcie linku spowoduje przejście do strony internetowej
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
z kilkoma wymyślonymi punktami „errata”. (Czy wspomniałem, że87245e386722ad77b4212dbec4f0e912
to skrót MD5 imienia osoby + dane kontaktowe, które trzymałem przechowywane w tabeli DB? :-)Oczywiście nie chroni to przed drukowaniem + skanowaniem + ocrcingiem ani przed cyklem „ponownego próbowania” plików PDF. I opiera się również na pewnym stopniu „bezpieczeństwa przez zaciemnienie”.
Oto jak używasz Ghostscript, aby dodać taki klikalny punkt aktywny w lewym dolnym rogu strony 1 pliku random-in.pdf:
Aby powiększyć obszar, który można kliknąć, zmień widoczną powyżej parametrów wiersza polecenia:
Jeszcze prostsze byłoby wygenerowanie i zachowanie skrótu MD5 pliku PDF w bazie danych. Będzie unikalny dla każdego tworzonego pliku PDF, ponieważ dokumenty UUID oraz CreationDate i ModDate wewnątrz jego metadanych. Oczywiście pozwala to również śledzić oryginalne pliki PDF w formie cyfrowej ...
źródło
-dJPEQ=100 -dQFActor=1.0
do wiersza poleceń Ghostscript, aby upewnić się, że utrzymasz 100% istniejącej jakości JPEG. Ale nie, nie zauważyłem żadnego pogorszenia jakości obrazu w moich plikach, jeśli użyłem ogólnego ustawienia-dPDFSETTINGS=/prepress
podczas ponownej destylacji plików PDF za pomocą Ghostscript ....-dColorImageFilter=/FlateEncode
(czyli bezstratnego ZIP), aby zastąpić domyślny=/DCTEncode
(którym jest stratny JPEG) w starszych wersjach GS. Od wersji GS 7.21 i=/FlateEncode
tak jest to ustawienie domyślne ... Tak samo jak w przypadku koloru, jest to prawda-dGrayImageFilter=...
(-dMonoImageFilter=...
używa/CCITTFaxEncode
domyślnie).Bardzo trudny i nie jestem pewien, czy to w ogóle odpowie na wszystkie pytania.
Nie jestem pewien, czy istnieje rozwiązanie typu „wszystko w jednym”, które może to zrobić lub losowo.
Gdybym jednak miał to za zadanie, pomyślałbym, że najłatwiej jest zachować dokument w formacie pośrednim, takim jak sformatowany HTML lub podobny.
Korzystając z drukowanego pliku CSS lub podobnego, możesz uzyskać układ identyczny z książką i użyć jakiegoś skryptu, aby losowo zobrazować obraz, treść lub cokolwiek, oraz komponent PDF po stronie serwera, który ponownie składa dokument.
tak więc - na przykład po zakupie dokumentu, skrypt kupujący może losowo wybrać liczbę identyfikującą mechanizm ochrony (np. pierwsze zdjęcie, drugie zdjęcie, gdzieś tekst itp.), a następnie wygenerować unikalny link do pobrania.
Po wywołaniu tego łącza pobierania sprawdza numer, wykonuje operację i kompiluje do pliku pdf, a następnie pobiera go do klienta.
Znów wiem, że nie będzie to łatwe / proste, ale nie prosisz o coś łatwego i jest to najlepszy sposób, jaki mogę wymyślić.
źródło