PDF閲覧制限 有効期限 フォルダ限定 AcrobatProXI

やっと夏休み♪
製造業のいいところは夏休みが長いこと
夏休み前に仕上げたpdfファイルの閲覧システムのメモを書いておきます。

あるフォルダにあるPDFを外部に見せるために一工夫したメモです。
見せるファイルはpdfなので、スクリーンキャプチャとか、スマホでカシャは避けられないのですが、
何とかそのままフォルダごとコピーなんてことは避けたいなと思います。

EXCELで検索画面を作ってPDFをshellで表示するようにします。
EXCELで検索画面を作る部分は次の機会にして、ここではPDFの処理のメモです。

個々のPDF側に必要な処理
有効期限を付けます。
閲覧できるフォルダを限定します。
(開いたPDFをコピーしてデスクトップなどに保存した時には開けないようにします。)
PDFを印刷不可・編集不可にします。
PDFの編集用にパスワードを付けます。

PDFの準備
見せるフォルダを決めておいて、
そのフォルダにpdfをコピーします。
このフォルダに置いたpdfに対してバッチ処理を行います。

さあらの環境はWindows7sp1 AcrobatProXI

参考にしたサイト
Adobe Acrobat XI + JavaScript例文辞典
http://www.openspc2.org/reibun/AcrobatXI/javascript/form/030/index.html

Acrobat9Proの頃はバッチ処理となっていたものが、
AcrobatXIProではアクションとなっています。

♪自己責任で使ってください♪

有効期限のとフォルダ限定と印刷不可・編集不可・
編集用のパスワードの設定をまとめてアクションに入れていきます。 

AcrobatProXIを開いてツール⇒アクションウィザード⇒新規アクションを作成をクリック
その他のツールをクリックして、JavaScriptを実行をクリックして、追加
画像
 
追加すると、右側の窓にJavascriptを実行というのが表示ます。
ユーザーに確認のチェックを外します。
画像

設定を指定をクリックするとJavascriptのエディタが表示されます。
次のScriptをコピペします。
この部分はPDFの全頁にテキストフィールドを追加するためのものです。
This.GetPageBox(Docのメソッド)については
Acrobat 8.0 SDK :
JavaScript for Acrobat API Reference 日本語版
307ページを参照してください。
https://helpx.adobe.com/jp/acrobat/kb/511727.html

ここから下をコピペしてください。
/*AddCover複数ページ*/
fName = "cover";//覆い用フィールド名
//すべてのページにフィールドを挿入するfunction
for (var p = 0; p < this.numPages; p++) {
var mySquare = this.getPageBox({nPage: p});
var myWidth = mySquare[2];
var myHeight = mySquare[1];
//PDFの座標の原点は左下(数学のと一緒)
//mySquareの配列0~3はそれぞれ
//(x座標原点0,y座標原点0,幅,高さ)
mySquare[0] = 0;
mySquare[1] = 0;
mySquare[2] = myWidth;//頁幅
mySquare[3] = myHeight;//頁高さ
var f = this.addField(fName + p, "text", p, mySquare);//テキストフィールド挿入
f.delay = true;
f.display = display.visible;//表示
f.borderStyle = border.s;
f.textSize = 0;//テキストサイズ:自動
f.textColor = color.black;//テキストカラー:黒
f.fillColor = color.gray;//背景色:グレー
f.delay = false;
}
↑ここまでをコピペしてOKをクリックしてください。
次に保存のアクションを追加します。 
「保存と書き出し」をクリックします。
「保存」をクリックして追加します。
設定を指定をクリックすると出力のオプションが表示されます。
そのままOKをクリックしてください。
画像


次に有効期限とフォルダ限定のscriptを貼り付けます。
再度その他のツールをクリックして、JavaScriptを実行をクリックして、追加してください。
ユーザーに確認のチェックを外します。
設定の確認をクリックしてJavaScriptエディタを表示して次のスクリプトをコピペしてください。
途中行頭にある+はページアクションにscriptを挿入するために必要なので、
そのままコピペしてください。
フォルダ限定の部分は処理しているファイルのパスを取ります。
util.prntd(ユーティリティメソッド)については
Acrobat 8.0 SDK :
JavaScript for Acrobat API Reference 日本語版
715ページを参照してください。
※重要 pathに空白セルや日本語が入らない場所にフォルダを作成してください。
ここから下をコピペします。
/*AddScriptPageAction複数ページ*/
fName = "cover"; //覆い用フィールド名
checkDate = "2019/09/30"; //①有効期限
for (var p = 0; p < this.numPages; p++) {
//スクリプト文
var myScript = 'var d = new Date();\r'
+ 'var f = this.getField("' + fName + p + '");\r'
+ 'var s = "yyyy/mm/dd";\r\r'
+ 'var koteiFor = ("' + this.path + '");\t//②固定アドレス\r'
+ 'var openedFor = this.path;\r'
+ '//現在の日付が有効期限を過ぎている場合の処理\r'
+ 'if ("' + checkDate + '" < util.printd(s, d)) {\r'
+ ' f.display = display.visible;\t//テキストフィールド表示\r'
+ ' app.alert("表示できなくなりました。");\r'
+ ' this.closeDoc();\r'
+ '} else {\r'
+ '} if (openedFor != koteiFor) {\r'
+ ' f.display = display.visible;\t//テキストフィールド表示\r'
+ ' app.alert("表示できなくなりました。");\r'
+ ' this.closeDoc();\r'
+ '} else {\r'
+ ' f.display = display.hidden;\t//テキストフィールド非表示\r'
+ '}';
+ '};'
this.setPageAction(p, "Open", myScript);
}
↑ここまでをコピペしてOKをクリックしてください。
次に保存のアクションを追加します。 
「保存と書き出し」をクリックします。
「保存」をクリックして追加します。

次に「保護」をクリックして「暗号化」を追加してください。
設定を指定をクリックすると
画像

セキュリティ方法のところで、パスワードによるセキュリティを選択してください。
画像

設定のところで、印刷不可・編集不可としてパスワードを設定してください。
パスワードは最大32文字まで使えます。最強になるように工夫してください。
OKをクリック⇒OK(注意書き)をクリック⇒パスワードを再度入れてOKをクリック。
文書のセキュリティの画面が再度表示されます。⇒閉じるをクリック。
次に保存のアクションを追加します。 
「保存と書き出し」をクリックします。
「保存」をクリックして追加します。

右側の窓の処理するファイルのところのフォルダのマークをクリックして
処理するPDFが入っているフォルダを選択してください。
又はpathをコピーして下の方にある窓にコピペしてOKをクリックしてください。
新規アクションを保存します。
右下にある保存をクリックします。
アクション名と説明を入れて保存します。
画像


次に今作成したアクションを実行します。
画像

今作成したアクションAddCoverAddScriptAddSecurity
をクリックします。
画像

開始をクリックします。
順番にファイルを開いて処理が始ります。

処理が終わったらPDFファイルを開いて次のことを確認してください。
印刷不可・編集不可になっていること
他の場所にコピーすると開けないこと
有効期限はその有効期限が来ると開けないこと
長くなりました。
これでPDFの処理は終了です。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック