PDFの閲覧期限を設定する

今回はPDFの閲覧期限を設定するというネタです。調べるとWindowsではフリーの期限設定ソフト(制限あり)がありますが、多くはかなり高価(9万円とか37万円とか)だったりMac版がなかったりします。基本的にこれらのソフトはページの有効期限をJavaScriptで調べて処理するようになっています。要するにJavaScriptを埋め込んでいるだけ、という話になります。
JavaScriptを埋め込むだけならばAcrobat (今回はver 7のプロフェッショナル、Mac版を使用) でできますから、そもそもソフトを買ったりする必要はないはずです。

それでは、実際のやり方を説明しましょう。
まず有効期限を設定したいPDFを用意します。AcrobatでPDFを表示させます。メニューの「アドバンスト」→「JavaScript」→「文書レベルJavaScriptの編集」を選択します。
ダイアログが表示されるので呼び出す関数名を入力し「追加」ボタンをクリックします。関数名は日本語ではなく英語で入れてください。例えば

checkDate

のように入力します。間違って

checkDate()

のようにカッコをつけてはいけません。「追加」ボタンを押すとスクリプトを入力するダイアログが表示されます。そこで、以下のように入力しましょう。


function checkDate()
{
dObj = new Date();
y = dObj.getFullYear();
m = dObj.getMonth() + 1;
d = dObj.getDate();
if ((y >= 2005) && (m >= 6) && (d >= 30))
{
app.alert("閲覧期間を過ぎています。PDFを閉じます。");
this.closeDoc(false);
}
}
checkDate();


後はPDFを保存するだけです。このサンプルの場合、2005年6月30日以前は閲覧できますが、30日以後は閲覧しようとすると警告が表示されPDFが閉じられてしまいます。ただし、最初の1回だけ保存するかどうか尋ねてくるので保存するようにしてください。保存しないと、せっかく入力したスクリプトが保存されずに、また最初からやり直しになってしまいます。

閲覧期限の設定ですが、上記スクリプトの

if ((y >= 2005) && (m >= 6) && (d >= 30))

の数字の部分が期限になっています。2005の部分が年数、6が月、30が日数です。閲覧期限に合わせて指定してください。

ところで、期限を設定したのはいいけど、開くと閉じられてしまい、二度と編集できないのではないかとなると困ります。このような場合には「環境設定」で「JavaScript」のカテゴリを選択します。ダイアログの「Acrobat JavaScriptを使用」のチェックを外します。これで文書にスクリプトが埋め込まれている場合には確認のダイアログが表示されます。実行しないようにボタンを押せば、従来どおりPDFの変更などが可能になります。

ちなみにPDFをAcrobatで閲覧しない場合、例えばMacOS XのプレビューなどはJavaScriptは動作しませんので、有効期限を設定しても処理されず、いつでも閲覧が可能になってしまいます。




[サンプルをダウンロード]