質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

7850閲覧

PDFの閲覧有効期限をjavascriptで制御したい(Acrobat8proを使用)

fkymineed

総合スコア10

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/03/06 00:17

目的としてはHPに掲載したPDFにアクセスする際、有効期限が来たらファイルが見れないようにする、といったものです。

その際見れない方法としては有効期限が来たらモザイクがかかって見れない状態にしなければならないのですが、私の前任の方はレイヤーにモザイク処理した画像を入れ、有効期限が来たらレイヤーを表示させて見れないようにしていたようで、同じものをしようとしてもうまくいきません。

lang

1function checkDate() 2{ 3var docOCGs = this.getOCGs(); 4dObj = new Date(); 5var myDate = "有効年/月/日" 6var d = new Date(); 7var s = "yyyy/mm/dd"; 8var a = ""; 9 10if(util.printd(s, d) < global.accessDate) 11{ 12 a = global.accessDate; 13}else{ 14 a = util.printd(s, d); 15} 16 17if (myDate < a) { 18 19for (var x=0; x < docOCGs.length; x++) 20{ 21 docOCGs[x].state = true; 22 23} 24 25global.accessDate = a; 26global.setPersistent("accessDate",true); 27 28}else{ 29 30for (var x=0; x < docOCGs.length; x++) 31{ 32 docOCGs[x].state = false; 33} 34 35 36 37} 38} 39checkDate();

前任の方が使われていたソースはこれだけなのですが、acrobatでは動作確認できても、仮サーバーに上げてブラウザで確認すると動作しません。

javascriptについては初心者で、動作の意味等は調べて分かる部分もあるのですが、どうして動作しない不具合が出ているのかまでは分からない状態です。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

検証を重ねた結果、スクリプト自体には問題はありませんでした。
この処理をするPDFのバージョンが1.6だったのを1.7に修正で、PCでは基本的に動作することが確認できました。

動作しない現象については、指定した期限が一度きてこのスクリプトが動作していったんモザイクがかかると(レイヤー表示がONになると)、その後PCの日付を戻したりしてもレイヤーが非表示には絶対にならないように組んであるためでした。

そのため、テスト等で日付を何度も前後させたPCなどでは、Cドライブに蓄積されているPDFのキャッシュ(h日付ログ?)を消さないと動作しなくなるようです。こちらについては、まだCドライブのどこにログデータがあるのか見つけきれてはいませんが…。

スクリプトの不具合ではなくPC側の問題という事が分かりましたので、自己解決という形にさせていただきます。ありがとうございました。

投稿2015/03/10 08:17

fkymineed

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fkymineed

2015/03/16 02:20

参考リンクありがとうございます!おかげざまでログデータの場所を把握できました。 現在は更に出てきた問題として、グローバル変数が上書きされない?(全てのログが1ファイルに書き出しされる)ので、前年度納品のPDFを開いたPCで今年度期限にしてある別のPDFを開いてもスクリプトが動作しない、といった点です…。 緊急の対応策として一度前年度納品の期限がきたPDFを開いた事があるPCからログファイルを消す、という事を先方にしていただいていますが、今後もずっとそうするわけにはいかないので対応策を検討中です。
Lhankor_Mhy

2015/03/17 03:09

global.setPersistent("accessDate",true); を global.setPersistent("accessDate_2015",true); などとして global.accessDate を global.accessDate_2015 などとするなどして、年度やバージョンによって変数名を変えてはいかがでしょうか。
fkymineed

2015/03/17 07:29

いただいたアドバイス通り変数名を変えてみたら、問題が無事に解決致しました!今後は年度または期限ごとに変数名を変えてPDFにスクリプトを組み込もうと思います。 困り果てていたので、本当に助かりました…!ありがとうございました!
guest

0

すみませんコードはきちんと見ないまま回答しますが、
http://www.ka-net.org/other/ot02.html
ここに割と詳しく手順やコードあるようです。

投稿2015/03/06 04:28

tsunet111

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fkymineed

2015/03/06 04:56

ご回答ありがとうございます。 こちらのサイトも解決方法を調べている時に見ていたのですが、こちらはacrobat既存のツールで白マスクをかける、といった方法になりますのでモザイクがかかったようにするのとは方法が少し違うかなと考えております…。 見た目がモザイクがかかったように、なのでこちらの白マスクを半透明状態にできれば少し近づく気はするのですが…。
guest

0

PDFはAcrobat上で動作させた場合とブラウザ上で動作させた場合では結果が異なることがあります。命令によっては動作しないことがありますし、処理の順番がGoogle Chromeでは異なる場合があります。また、ブラウザ上でPDFを表示させた場合、ブラウザによって動作が異なるので、この点にも注意が必要です。

Adobe Acrobat XI + JavaScript例文辞典
ということですので、どのブラウザでどの部分が動作しないのかひとつひとつ確かめていく必要があるかと思います。AdobeReaderで動作するのであれば、現実的なのはマスク画像に「ダウンロードしてご利用ください」などの文言を入れてしまうことかと思います。

投稿2015/03/06 02:52

Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fkymineed

2015/03/06 04:17

素早いご回答ありがとうございます。ブラウザによって、という部分は認識していなかったので勉強になりました。 現在Chomeで動作しない状態なので、他ブラウザでは動くのか検証してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問