
背景
LaTeX を使用して本を書きます。ユーザーが本を購入すると、PDF が自動的に生成されます。
問題
PDF には、個人の名前と連絡先情報を含む透かしが必要です。
質問
次の基準を満たすソフトウェアは何ですか?
- 暗号化された目に見えない透かしをPDFに適用します
- オープンソース
- プラットフォームに依存しない (Linux、Windows)
- 高速(200 ページの PDF を 1 秒未満でマーク)
- バッチ処理(コマンドラインのみ)
- 共謀攻撃耐性
- 壊れにくい(例:PDF -> EPS -> PDF には透かしが残っています)
- よく文書化されている(使用例が示されている)
アイデアとリソース
いくつかの考えと発見:
- 自然言語処理 (NLP) 透かし。
- ランダムに選択された画像にステガノグラフィを適用します。
- http://openstego.sourceforge.net/cmdline.html
NLP の問題は、文法エラーが発生する可能性があることです。ステガノグラフィーの問題は、画像が画像キャッシュから取得されるため、透かし入り画像でそのキャッシュを再作成すると、PDF の生成時に遅延が発生することです (キャッシュから 1 つの画像を削除することもできますが、これは優れた解決策ではありません)。
ありがとう!
答え1
数年前に似たようなことをしました。あなたの「厳しい」基準をすべて満たしたわけではありません。次のように機能しました:
ランダムな PDF ページの境界のランダムな場所に、ほとんど検出されない 2x2 ポイント サイズの「クリック可能な」領域を配置しました。偶然に発見される可能性はほとんどありません (PDF には、明らかにクリック可能な他のホットスポットが多数あるため...)。
リンクをクリックすると、いくつかの架空の「正誤表」の箇条書きがある Web ページに移動します
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
。(これは、DB テーブルに保存しておいた人物の名前 + 連絡先データの MD5 ハッシュだと言いましたか87245e386722ad77b4212dbec4f0e912
? :-)
明らかに、これは印刷+スキャン+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 コンポーネントを使用してドキュメントを組み立て直すことができます。
そうすると、たとえば誰かがドキュメントを購入すると、購入スクリプトは保護メカニズムを識別する番号 (最初の画像、2 番目の画像、どこかのテキストなど) をランダムに選択し、一意のダウンロード リンクを生成することができます。
ダウンロード リンクが呼び出されると、番号がチェックされ、操作が実行され、PDF にコンパイルされてクライアントにダウンロードされます。
繰り返しますが、これは簡単でも簡単でもないことは承知していますが、簡単なことを求めているわけではなく、これが私が考えられる最善の方法です。