渡米生活。(日記)

渡米生活。本家から切り離しました。あまり渡米生活に関係のないプログラムネタや音楽ネタなど。

閲覧期限つきPDFファイルの作成(Adobe Acrobat)

Adobe Acrobatで閲覧期限つきのPDFファイルを作成する方法。
諸処で解説されているけど、自分用メモ。

Appleのプレビューで見ると、期限にかかわらず白くなって見えなくなります。
配布時に、Adobe Acrobatで開くように注意書きが必要かも。

1)Adobe Acrobatで文書を開く。

2)フォームから「編集」を選ぶ。フィールドフォームを検出するかきいてくるので、「いいえ」を選ぶ。(新規作成にするとフォームを自動解析しようとして面倒なことになるので)

3)テキストフィールドを隠したい部分に新規作成、隠す部分を覆うようにして設定。テキストフィールド名はデフォルトのText1でよい(2つ名以降はText2,Text3などとする)。必須フィールドにチェック。

4)テキストフィールドのプロパティを開き,「一般」タブを開き、表示と印刷で「表示」に設定する。

5)「表示方法」タブから,「塗りつぶしの色」で,「白色」を選ぶ

6)全部設定したら、「フォームの編集を綴じる」で編集終了。

7)ページサムネールから、フォームを加えたページを全部選び、右クリックで「ページのプロパティ」を選択。「アクション」を選び、トリガーは「ページを開く」、アクションの選択から「JavaScriptを実行」を選んで「追加」ボタンを押す。

窓が開くので、そこに以下のスクリプトをペースト。

var myDate = "2016/12/31"; //有効期限
var fieldprefix = "Text"; // テキストフィールド名の接頭語
var npages = 29;           // テキストフィールドの数
var message = "閲覧期限を過ぎました。新バージョンの配布につきましてはhttp://www.hoshina-music.com/をご覧下さい。";   //警告メッセージ

var d = new Date();
var s = "yyyy/mm/dd";

if (myDate < util.printd(s, d)) {
  //現在の日付が有効期限を過ぎている場合の処理

  for (i=1; i<=npages; i=i+1) {
      var myField = this.getField(fieldprefix+i);	//テキストフィールド名の取得
      myField.display = display.visible;	//テキストフィールド表示
  }
  app.alert(message);

} else {
  //現在の日付が有効期限内の場合はフィールドを非表示

  for (i=1; i<=npages; i=i+1) {
      var myField = this.getField(fieldprefix+i);
      myField.display = display.hidden;   //テキストフィールド非表示
  }
}


このスクリプトはページを移動するたびに、全ページのフィールド表示をセットしなおすので、無駄といえば無駄なのだけれど、ページが多いといちいちそのページ用のスクリプトをセットするのは手間なのでこうしました。


8)ツールからJavaScriptを選び、「文書のアクションを設定」を選択
「文書を保存する」を選び、以下のJavascriptを設定。
npagesは、作ったテキストフィールドの数。この例では29ページにそれぞれ1フォーム配置して隠したのでこうなりました。

var fieldprefix = "Text"; // テキストフィールド名の接頭語
var npages = 29;           // テキストフィールドの数
for (i=1; i<=npages; i=i+1) {
      var myField = this.getField(fieldprefix+i);
      myField.display = display.visible;   //テキストフィールド表示
}

9)ツールからJavaScriptを選び、「文書のアクションを設定」を選択
「文書を保存した」を選び、以下のJavascriptを設定。

var fieldprefix = "Text"; // テキストフィールド名の接頭語
var npages = 29;           // テキストフィールドの数
for (i=1; i<=npages; i=i+1) {
      var myField = this.getField(fieldprefix+i);
      myField.display = display.hidden;   //テキストフィールド非表示
}

10)文書のプロパティから「セキュリティ」を選び、パスワードのセキュリティをかける。


以上、以下のページを参考にさせていただきました。
http://www.geocities.jp/habacchi1969/down/RIGHT.HTM