1

ユーザーがダウンロードできる PDF があります。ただし、PDFのテキストにダウンロードされた日付が必要です。

PDF に「現在の日付」スタンプを挿入して、開いたときに動的に追加されるようにする方法はありますか?

おそらく、JavaScript を PDF に追加できますか?

4

2 に答える 2

0

ユーザーに渡す前に、サーバー上で PDF に署名してタイムスタンプを付けることができます。署名は 1 日に 1 回実行できます (タイムスタンプ時間の場合に、より細かい粒度が必要でない限り)。これは、PDF にタイムスタンプを付ける唯一の信頼できる方法です。また、署名は削除することができ、簡単に削除できない透かしを追加したい場合は、これは別の話です.

于 2011-02-09T16:27:06.407 に答える
0

JSは行くべき道のように聞こえます...ほとんど。

日付を表示する場所に空のテキスト フィールドを追加できます。誰かが初めて PDF を開いたときに、フィールドの値を設定できます。

問題:

  1. Reader は、Acrobat で Reader が有効になっていない限り、変更された PDF を保存できません。
  2. スクリプトは、ダウンロード時ではなく、PDF を開いたときに実行されます。

本当にダウンロード時間をマークしたい場合は、サーバー上で行う必要があります。再びフィールドです。今回はバイト オフセット モンキーを使用しています。

キーワード (または作成者など... 使用していないドキュメント情報フィールドの 1 つ) を一連の空のスペースに設定します...最大のタイムスタンプに対応するのに十分です。スクリプトでは、フォームが開かれると、常にその情報フィールドをタイムスタンプ フィールドに書き込みます。リーダーの有効化について心配する必要はありません。

実際にタイムスタンプを書き込むには、PDF の情報フィールドの正確なバイト オフセットを知る必要があります。悪い)。PDF を提供するときが来たら、バイトを吸い上げ、タイム スタンプのバイトを変更し、それらの変更されたバイトを提供します。

これが最も効率的な (そして脆い) 方法です。


正しい方法で処理したい場合は、お気に入りの PDF ライブラリを使用してフォームの値を変更し、結果の PDF を提供してください。スクリプトは必要ありませんが、サーバーの作業が大幅に増えます。


: 複数のフィールドで同じ名前を共有できます。それらは同じ値も自動的に共有します。したがって、すべてのページにタイム スタンプを表示する場合は、"timestamp1"、"timestamp2" などは必要ありません。すべてのフィールドに同じ名前を付けてから、一度値を設定できます。「お気に入りの PDF ライブラリ」は、これをうまく処理できない可能性があります。iText はそうですが、他の人もそうだと確信しています。

于 2011-02-09T20:23:56.397 に答える