產生或更新 PDF 以包含加密的隱藏浮水印?

產生或更新 PDF 以包含加密的隱藏浮水印?

背景

使用 LaTeX 寫書。當使用者購買該書時,將自動產生PDF。

問題

PDF 應包含浮水印,其中包含人員姓名和聯絡資訊。

問題

哪些軟體符合以下標準:

  • 將加密的、不可見的浮水印套用到 PDF
  • 開源
  • 獨立於平台(Linux、Windows)
  • 快速(在 1 秒內標記 200 頁 PDF)
  • 批次(僅命令列驅動)
  • 抗共謀攻擊
  • 非脆弱(例如,PDF -> EPS -> PDF 仍包含浮水印)
  • 有據可查(顯示範例用法)

想法與資源

一些想法和發現:

NLP 的問題是可能會引入語法錯誤。隱寫術的問題在於圖像源自圖像緩存,因此使用帶有浮水印的圖像重新創建該緩存會在生成PDF 時產生延遲(我可以只從緩存中刪除一張圖像,但這不是一個優雅的解決方案) 。

謝謝你!

答案1

幾年前我也做過類似的事。它不符合您所有的“硬”標準。它的工作原理是這樣的:

  • 我在隨機 PDF 頁面邊界之一的某個隨機位置放置了一個幾乎無法檢測到的 2x2 點大小的「可點擊」區域。它不太可能是偶然發現的(無論如何,在 PDF 中還有其他非常明顯可點擊的熱點中...)。

  • 如果您單擊該鏈接,它將帶您進入一個網頁http://my.own.site/project/87245e386722ad77b4212dbec4f0e912,其中包含一些虛構的“勘誤表”要點。 (我有沒有提到這87245e386722ad77b4212dbec4f0e912是我保存在資料庫表中的人名 + 聯絡資料的 MD5 雜湊值?:-)

顯然,這並不能防止列印+掃描+OCR 或 PDF「重讀」循環。而且它還依賴某種程度的「默默無聞的安全性」。

以下是如何使用 Ghostscript 將這樣一個可點擊的熱點添加到 random-in.pdf 第 1 頁的左下角:

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

若要使可點擊區域更大且可見,請變更命令列參數,如下所示:

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

更簡單的是產生 PDF 的 MD5 雜湊值並將其保存在資料庫中。由於文件 UUID 以及其元資料中的 CreationDate 和 ModDate,您建立的每個 PDF 都具有唯一性。當然,這也只允許追蹤數位形式的原始 PDF...

答案2

非常困難,我不確定這是否能回答您所有的問題。

我不確定是否有一種一體式解決方案可以做到這一點或隨機化。

但是,如果我承擔此任務,我認為最簡單的方法是將文件保留為中間格式,例如格式化 HTML 或類似格式。

使用列印 CSS 檔案或類似文件,您可以獲得與書籍相同的佈局,並使用某種腳本來隨機化圖片、內容或任何內容,以及將文件組裝回來的伺服器端 PDF 元件。

那麼-例如,當有人購買該文件時,您的購買腳本可以隨機選擇一個標識保護機制的數字(例如第一張圖片、第二張圖片、某處的文字等),然後產生唯一的下載鏈接。

當該下載連結被呼叫時,它會檢查號碼,執行操作並編譯為 pdf,然後將其下載到客戶端。

再說一次,我知道這並不容易/直接,但你並不是要求一些容易的事情,這是我能想到的最好的方法。

相關內容