PDFを生成または更新して、暗号化された非表示の透かしを含めますか?


10

バックグラウンド

LaTeXを使用して本を書く。ユーザーが本を購入すると、PDFが自動的に生成されます。

問題

PDFには、人物の名前と連絡先情報を含む透かしが必要です。

質問

次の条件を満たすソフトウェアはどれですか。

  • 暗号化された非表示の透かしをPDFに適用します
  • オープンソース
  • プラットフォームに依存しない(Linux、Windows)
  • 高速(1秒未満で200ページのPDFをマーク)
  • バッチ処理(専用のコマンドライン駆動)
  • 共謀攻撃耐性
  • 壊れにくい(例:PDF-> EPS-> PDFにはまだ透かしが含まれています)
  • 十分に文書化されている(使用例を示しています)

アイデアとリソース

いくつかの考えと調査結果:

NLPの問題は、文法エラーが発生する可能性があることです。ステガノグラフィーの問題は、画像が画像キャッシュから取得されることです。そのため、透かしを入れた画像でそのキャッシュを再作成すると、PDFの生成時に遅延が発生します(キャッシュから画像を1つ削除するだけでも、エレガントなソリューションではありません)。

ありがとうございました!


要件の説明を少し変更してください。それ以外の場合は不明確です。「検出不能な透かし」は明らかに望んでいるものではありません...それ以外の場合、必要に応じてどのようにして透かしを検出しますか?
Kurt Pfeifle 2010

あなたの考えているシステムの目的が正確に何であるかは少し不明確です:ライセンスがこれを禁止しているにもかかわらず、PDFが別のユーザーに渡されるかどうかを検出しますか?ライセンスで禁止されているPDFが紙に印刷されているかどうかを検出しますか?インターネットを介して特定のPDFの経路を追跡し、それが開いたときに追跡しますか?または、他の何か?
Kurt Pfeifle 2010

@pipitas:登録済みバージョンのPDFが許可なくリリースされた場合、誰がリリースしたか知りたいのですが。しかし、PDFに透かしが含まれていることがわかると、透かしはそれだけ回避されやすくなります。
Dave Jarvis、

回答:


6

私は数年前に似たようなことをしました。すべての「ハード」基準を満たしていませんでした。それはこのように機能しました:

  • ランダムなPDFページの境界線の1つのランダムな場所に、ほとんど検出できない2x2ポイントサイズの「クリック可能な」領域を配置しました。偶然に発見される可能性はあまりありません(とにかくPDFにあった他の非常に明らかにクリック可能なホットスポットの負荷の中で...)。

  • リンクをクリックするhttp://my.own.site/project/87245e386722ad77b4212dbec4f0e912と、作成された「エラッタ」の箇条書きのあるWebページに移動します。(私はそれ87245e386722ad77b4212dbec4f0e912がDBテーブルに保存された人の名前+連絡先データのMD5ハッシュであったことを言及しましたか?:-)

明らかに、これは印刷+スキャン+読み取りまたは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をデジタル形式で追跡することもできます...


PDFを実際に見つけて、この手法を使用して追跡したことがありますか?
Dave Jarvis、

@Dave Jarvis:はい、ある意味でそうしました...しかし、それは「深刻な」ことではありませんでした。追跡にはあまり興味がありませんでした。私はこれを概念実証としてのみ行い、約6か月後に「追跡」Webサーバーをオフにしました。ネットワークPDFサーバー用で、お客様の社内に設置しました。「トラッカー」は上記のものに似ていますが、フルページのクリック可能な領域を使用していました。私はちょうど.... Apacheのログファイルに「ヒット」の数を追跡
クルトPfeifle

素晴らしいアイデアですが、GhostScriptは、そのようなPDF上でGhostScriptを実行すると、含まれているサンプル画像を劣化させる可能性があることに注意してください。 JPEG形式の圧縮をすべての画像に適用します(圧縮解除したものも
含み

@SamB:私は考えてあなたが追加することができ-dJPEQ=100 -dQFActor=1.0ますが、JPEGの品質をexisitingの100%を維持するだろうことを確認するためのGhostscriptのコマンドラインに。しかし、いや、私は画質のいずれかの劣化に気づいていませんでした私の私は、一般的な設定を使用した場合のファイル-dPDFSETTINGS=/prepress.... Ghostscriptを持つ任意のPDFを再蒸留するときに
クルトPfeifle

[続き]そして、いいえ、Ghostscriptからの画像に提供されているのはJPEG圧縮だけではありません- -dColorImageFilter=/FlateEncode(ロスレスZIPである)を使用=/DCTEncodeして、古いGSバージョンのデフォルト(ロッシーJPEG)をオーバーライドできます。GS v7.21以降のデフォルトは=/FlateEncodeとにかく...色と同じです-dGrayImageFilter=...(デフォルトで-dMonoImageFilter=...使用/CCITTFaxEncodeします)
Kurt Pfeifle

1

非常に難しい質問です。これですべての質問に答えられるかどうかはわかりません。

私はこれを行うことができる、またはランダム化することができるオールインワンのソリューションに確信が持てません。

しかし、私がこれを任された場合、最も簡単な方法は、フォーマットされたHTMLなどの中間形式でドキュメントを保持することだと思います。

印刷用のCSSファイルなどを使用して、レイアウトを本と同じにして、何らかのスクリプトを使用して画像、コンテンツなどをランダム化し、ドキュメントを組み立てるサーバー側のPDFコンポーネントを作成できます。

したがって、たとえば、ドキュメントを購入すると、購入スクリプトは保護メカニズムを識別する番号(ランダムに最初の画像、2番目の画像、テキストなど)をランダムに選択し、一意のダウンロードリンクを生成できます。

そのダウンロードリンクが呼び出されると、番号を確認し、操作を実行してPDFにコンパイルし、それをクライアントにダウンロードします。

繰り返しますが、これは簡単ではないことを知っていますが、簡単なことを求めているのではなく、これが私が考えることができる最良の方法です。


@Dave Jarvis-私はあなたが何をしようとしているのか完全に理解しています...私が言ったように、私は最善の解決策はわかりませんが、私が言ったことは少なくともうまくいくはずです...簡単からはほど遠いです。
ウィリアムヒルサム

@Dave Jarvis-私が言おうとしていること、またはやり取りしようとしているのは、あなたがやりたいことを実行するための簡単な方法をすべて見たことがないということですが、PHP / ASP.Netを使用すると、スクリプトの作成やサードパーティの呼び出しが簡単になりますコンポーネント。HTMLのドキュメント全体が正しく/正確にフォーマットされていれば、PDFコンポーネントを使用して変換するのは非常に簡単だと思います。たとえば、100ページと31ページの画像があるとします。 1〜30ページをPDFとして、32〜100ページをPDFとして、31ページを生成して(本の残りのスタイルに合わせて)HTMLでフォーマットし、1/2を使用できます
William Hilsum

最初のPDFを取得し、HTMLページを変換し、2番目のPDFを取得して、すべてを組み合わせた新しいPDFを生成するPDFコンポーネント。生成されたページは、スクリプトを呼び出したり、ステガノグラフィー(動詞については不明)を実行したり、その他の必要なことを実行したりできます...多くの(無料および有料)pdfコンポーネントがあります-これは、たとえば... oneone.com/SuperProducts / PDFこれにより、理解しようとしていることが少し明確になることを願っています。2
William Hilsum、

@Dave Jarvis-えっと、正確ではない...言ったように、説明するのは非常に難しい....一部のPDFコンポーネントは、CSS /印刷スタイルとともにすばらしい。たとえば、Moodleを見てください。Webページを完全にフォーマットして、印刷物を本のように見せたり、スタイルをたどったりすることができます。次に、PDFコンポーネントを使用して、最終結果の外観とまったく同じようにエクスポート/保存できます。必要な画像とテキストを簡単に生成し、それを(エンドユーザーにシームレスに)単一のPDFファイルとしてアセンブルできます。あなたが望むものに到達する最も簡単な方法だと思うので、私は単にweb / php / asp.netについて言及します。
ウィリアムヒルサム

@Dave Jarvis:では、pdfTeXを使用していないと思いますか?(または、ユーザーがpdf-> ps-> pdf変換を行い、その過程でサンプル画像を劣化させることについてもっと心配しましたか?)とにかく、GhostScriptはJPEG形式の画像を圧縮形式で保存するほどスマートではなく、入力で発生する画像にJPEG形式の圧縮を自動的に適用する傾向があるため、ps-> pdf変換通常画像を劣化させます。(どうやら、DistillerはJPEGスタイルの画像をそのままにするように指示できますが、実際にそれを持っている人はいますか?)
SamB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.