初心者備忘録

Webページ開設しました → 初心者備忘録: http://www.ka-net.org/

全体表示

[ リスト ]

前回、有効期限が過ぎている場合にのみテキストフィールドを表示することで、PDF文書に有効期限を設定する方法について記載したが、この方法ではJavaScriptが無効の場合には意味がなかった。

そこで今度は逆に、通常は文書の上にテキストフィールドを表示しておいて、有効期限内の場合のみテキストフィールドを非表示にする方法も試してみた。

この方法だとJavaScriptが有効でないとテキストフィールドを非表示にすることができないので、JavaScriptが無効の場合も対応できると考え、実際に試してみたところ目論見通り上手くいった!!
何というか、最初からこうしておけば良かったと思わなくもないですが、とりあえずこれで前回よりは実用性の高いものができそうです。

【Acrobat JavaScript】PDFファイルに有効期限を設定する(修正版)
1. Acrobatで有効期限を設定したいPDFファイルを開きます。
2. テキストフィールドをページいっぱいに挿入します。(ツールメニューのフォームから「テキス
トフィールドツール」を選択した後、ページ左上から右下までドラッグ)
イメージ 1

3. テキストフィールドのプロパティの一般タブから、名前(ここでは『cover』)を設定し、表示と印刷「表示」に設定します。
イメージ 2

4. 「表示方法」タブから、「塗りつぶしの色」(ここでは白色)を設定します。
イメージ 3

イメージ 4

5. ページから1ページ目を選択し、オプションから「ページのプロパティ」を開きます。
イメージ 5

6. アクションタブから、トリガは「ページを開く」、アクションは「JavaScriptを実行」を選択し「追加」ボタンをクリックします。
イメージ 6

7. JavaScriptエディタに下記コードを貼り付けます。
※ 下記コード内「this.getField("***");」の「***」には、3.で設定したフィールド名を入れます。
※ 必要に応じて有効期限を変更してください。
var myDate = "2008/09/01"	//有効期限
var myField = this.getField("cover");	//テキストフィールド(フィールド名:cover)の取得
var d = new Date();
var s = "yyyy/mm/dd";

//現在の日付が有効期限を過ぎている場合の処理
if (myDate < util.printd(s, d)) {
  app.alert("閲覧期限 " + myDate + " を過ぎましたので文書を表示することはできません。");
} else {
//現在の日付が有効期限内の場合の処理
  myField.display = display.hidden;	//テキストフィールド非表示
}
イメージ 7

8. 「ページのプロパティ」画面に戻ったら、そのまま「OK」ボタンをクリックします。

次はセキュリティ設定です

9. 「アドバンスト」メニューの「セキュリティ」から「パスワードによる暗号化」を開きます。
イメージ 8

10. 「パスワードによるセキュリティ - 設定」画面から「文書の印刷および編集を制限…」にチェックを入れ、「テキスト、画像、およびその他の内容のコピーを有効にする」のチェックを外す設定にします。
イメージ 9

11. PDF文書を保存します。

以上で作業は終了です。
これで、有効期限を設定したPDF文書を開くと、有効期限が過ぎていた場合はメッセージが表示され、文書が表示されなくなります。(テキストフィールドに文書が隠されたままになります)

注意点としては、パスワードでロックをかけて文書の編集を禁止しておかないと、Acrobatで有効期限内にPDF文書を開いた際、文書を閉じるときに保存確認ダイアログが表示されてしまいます。(ブラウザやReaderで開いたときは保存確認ダイアログは表示されません)
イメージ 10


【関連記事】
[Acrobat]PDFファイルに有効期限を設定する(Acrobatのみ有効)
http://blogs.yahoo.co.jp/kinuyo_asami/16765164.html
[Acrobat]PDFファイルに有効期限を設定する(Readerにも対応)
http://blogs.yahoo.co.jp/kinuyo_asami/16817219.html
[Acrobat]日本標準時を取得する
http://blogs.yahoo.co.jp/kinuyo_asami/17415645.html
[Acrobat]RSS 2.0を取得する
http://blogs.yahoo.co.jp/kinuyo_asami/17561429.html


追記:
今日何気なく検索エンジンで検索をかけていたら、当ブログよりもはるかに実用的なPDFの閲覧制限について書かれているサイトを発見した!!

「PDFに閲覧制限をかける」
http://www.geocities.jp/habacchi1969/down/RIGHT.HTM

勝手にリンクを貼っていいものかどうか分からないのだが、「特定のURL以外ではPDFを開けないようにする処理」などはとても参考になった!!
ここまで書いてくれているサイトがあるんだから最初から検索しておけよ、自分…、といった感じです。
PDFに透かし入れたり何だりした自分の苦労は一体…。

閉じる コメント(4)

顔アイコン

はじめまして。PDFに閲覧制限をかける方法についてここのところ悩んでおりましたところ、こちらのブログに辿り着きました。非常に役に立ち感動しております。

厚かましくも一点お伺いしたいのですが、当方javascriptにも素人でして、公開ていただいているコードのうち、

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

この部分に何か書きこむ必要があるのかどうかが分かりません。
お手数ですがご教授いただけますでしょうか?

2009/3/10(火) 午後 3:27 [ あずきあらひぐま ] 返信する

顔アイコン

> jog*_bo*i*o 様

コメントありがとうございます。
私の稚拙なコードがお役に立ったようで、私もうれしい限りです。

さて、ご質問いただいたコードについてですが、

「var d = new Date();」
このコードは現在の日付を取得するコードです。

「var s = "yyyy/mm/dd";」
このコードは上のコードで取得した日付を"yyyy/mm/dd"(例:2009/03/10)形式に変換するためのコードです。

ですので、上記部分のコードは特に変更する必要はありません。
記事中のコードの中で変更する必要があるのは「var myDate = "2008/09/01"」の日付部分だけです。

なお宣伝になってしまうのですが、私が開設しているホームページの方にもAcrobat JavaScriptで有効期限を設定する方法について記載しています。
そちらの方にはフィールドとスクリプトの挿入も自動化するコードを載せていますので、是非そちらもご覧ください。

http://www.ka-net.org/other.html

2009/3/10(火) 午後 11:18 [ kin*y*_as*mi ] 返信する

顔アイコン

ご丁寧に有難うございました。コメントを書かせていただいた後で、ホームページをお持ちだと気付きました。そちらも拝見させていただいております。とても参考になります。

2009/3/11(水) 午前 10:05 [ あずきあらひぐま ] 返信する

顔アイコン

はじめまして。掲載から5年以上も経過していますが、この度参考にさせていただいています。
不躾な質問で申し訳ありませんが、コードをカスタマイズしてみたいと考えています。ご教示いだだけないでしょうか。
このJavaScript構文を組み込んだ自ファイルの作成日を取得させるにはどうしたらいいのでしょうか。 削除

2013/10/20(日) 午後 0:40 [ ゆうた ] 返信する

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

開く トラックバック(1)


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事