※このブログの内容は、アドビ社から公開されている情報に基づき、個人の趣味で記述しています。
PDFフォームが、ローカルファイルから開かれたのか、Webサーバからダウンロードして開かれたのかを調べるには、JavaScriptを使えば簡単にできます。
※OS: Windows 7 Ultimete SP1
※Webブラウザ: IE 8.0, Safari 5.1.5
※PDF表示: Adobe Reader X 10.1.3
※PDF作成: Adobe Acrobat X Pro 10.1.3
※PDFフォーム作成: Adobe LiveCycle Designer ES2 9.0.0
Adobe LiveCycle Designer ES2のScriptエディタでスクリプトを書きます。
topmostSubform::ready:form – (JavaScript, client)
var schema = util.crackURL(event.target.URL).cScheme;
xfa.host.messageBox(“このPDFのURLスキーマは、” + schema + “です。”);
LiveCycle Scriptでは、Docオブジェクトは”event.target“で取得します。
Docオブジェクトの”URL”プロパティは、開いているPDFドキュメントのURLです。
“util.crackURL(cURL).cScheme“は、URLのスキーマ部(“file”, “http”, “https”)を取得します。
PDFフォームをローカルファイルとして、Adobe Reader X 10.1.3で開くと、セキュリティ警告のメッセージボックスが表示されます。
セキュリティ警告のメッセージボックスに対して、「許可」を選択すると、”file”と表示されます。
Adobe Acrobat X Proでも、結果は同じです。
Safari 5.1で、Webサイトへアクセスし、PDFフォームへアクセスすると、”http”と表示されます。
IE8でも、結果は同じです。
このようなスクリプトを用いて、PDFフォームがローカルファイルから開いたのか、Webサーバから取得して開いたのかを識別することができます。
この記事で使ったPDFフォームは、ここにあります。
↓
http://www003.upp.so-net.ne.jp/motosoft/misc/OrderForm104.pdf
PDFフォームが、ローカルファイルから開かれた場合、強制的に閉じるには、JavaScriptを使えば簡単にできます。
Adobe LiveCycle Designer ES2のScriptエディタでスクリプトを書きます。
強制的に開いた文書を閉じるためにjは、“closeDoc(true)”メソッドを使います。
topmostSubform::docReady – (JavaScript, client)
var myDoc = event.target;
var schema = util.crackURL(myDoc.URL).cScheme;
if (schema == “file”) {
myDoc.closeDoc(true);
}
ここで注意すべき点は、closeDoc(true)メソッドで閉じるドキュメントのレンダリングが終わっているイベント処理で実行する点です。
最初の例では、“ready:form” イベントを使いましたが、ここでは、“docReady”イベントを使います。
ただし、“docReady”ということは、もたついていると文書がチラっと見えてしまうため、見せたくなければ、余計なメッセージボックスなどは表示せず、速やかに文書を閉じてください。
ここまでのスクリプトを書けば、JavaScriptが有効であるとするならば、Webサーバへ接続したときには、内容が表示されるが、ローカルファイルへ保存して、Adobe Reader Xなどから開こうとすると、すぐに閉じてしまい、無いような見えないようにすることができます。
このような、トリッキーなスクリプトを、『なんちゃってPDF保存保護』と呼んでいます。
なんとなく、PDFフォームの保存保護ができているかのように見せかける妖術です。
なお、ここで紹介しているJavaScriptによる処理は、設定により無効化できます。
Adobe Reader Xのメニューで、「編集」- 「環境設定…」を選び、『環境設定』ダイアログボックスを表示します。
左側の「分類」ペインで「JavaScript」を選び、『Acrobat Scriptを使用』のチェックを外すと、PDFフォーム内に埋め込まれたJavaScriptの実行ができなくなり、JavaScriptによる処理を無効化できます。
JavaScriptを実行させたくない場合には、チェックを外して無効にしておくとよいでしょう。
JavaScriptを無効にしたら、全ての細工が無効化されるので、『なんちゃってPDF保存保護』と呼んでいるのです。
ところで、JavaScriptが無効にされてはPDFフォームの内容が見えず、有効であって初めて閲覧可能にすることができます。
そのお話は、またいつか・・・
[シリーズブログ]
ひみつのPDFフォーム
[1] [2] [3] [4]