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

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

ただいまの
回答率

90.45%

  • JavaScript

    21054questions

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

  • PDF

    308questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 3,388

fkymineed

score 6

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

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

function checkDate()
{
var docOCGs = this.getOCGs();
dObj = new Date();
var myDate = "有効年/月/日"
var d = new Date();
var s = "yyyy/mm/dd";
var a = "";

if(util.printd(s, d) < global.accessDate)
{
  a = global.accessDate;
}else{
  a = util.printd(s, d);
}

if (myDate < a) {

for (var x=0; x < docOCGs.length; x++) 
{
    docOCGs[x].state = true;

}

global.accessDate = a;
global.setPersistent("accessDate",true); 

}else{

for (var x=0; x < docOCGs.length; x++) 
{
    docOCGs[x].state = false;
}



}
}
checkDate();

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

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

宜しくお願いします。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/12 16:30

    > こちらについては、まだCドライブのどこにログデータがあるのか見つけきれてはいませんが…。

    参考:
    http://blog.goo.ne.jp/komikoni/e/b02d8e70adc4d7458e0a76839f042c3d

    キャンセル

  • 2015/03/16 11:20

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

    キャンセル

  • 2015/03/17 12:09

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

    キャンセル

  • 2015/03/17 16:29

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

    キャンセル

0

PDFはAcrobat上で動作させた場合とブラウザ上で動作させた場合では結果が異なることがあります。命令によっては動作しないことがありますし、処理の順番がGoogle Chromeでは異なる場合があります。また、ブラウザ上でPDFを表示させた場合、ブラウザによって動作が異なるので、この点にも注意が必要です。
Adobe Acrobat XI + JavaScript例文辞典
ということですので、どのブラウザでどの部分が動作しないのかひとつひとつ確かめていく必要があるかと思います。AdobeReaderで動作するのであれば、現実的なのはマスク画像に「ダウンロードしてご利用ください」などの文言を入れてしまうことかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/06 13:17

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/06 13:56

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

    見た目がモザイクがかかったように、なのでこちらの白マスクを半透明状態にできれば少し近づく気はするのですが…。

    キャンセル

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

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • JavaScript

    21054questions

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

  • PDF

    308questions

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