• ベストアンサー

PDFファイルから別ウィンドウでURLリンクの方法

Acrobat Professional6.0を使ってます。PDFファイルからリンクツールを使って、新規ブラウザでURLリンクさせたいと思ってます。 アクション設定で「Javascriptを実行」を選択し、 window.open("http://www.++++.co.jp","sample"); と書いてみましたがダメでした。 何か方法はありますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.1

結論から言うと無理だと思います(思うだけですが)。 まず大きな誤解を2つほどされていると思います。 ---1つめ--- Acrobat の JavaScript は Acrobat の JavaScript であって,ブラウザの JavaScript とは違います。  IE の JavaScript,  Illustrator の JavaScript,  Photoshop の JavaScript,  InDesign の JavaScript,  (↑ http://www.openspc2.org/)  その他,  OOO(OpenOffice.org) の JavaScript,  Flash の JavaScript(JSFL) などなどなど… JavaScript(Java風スクリプト)は,多くのソフトで使用できますが window.open は IE や NN などブラウザ用の狭義の JavaScriptです。 多くのソフトで使用されている JavaScript は, まず第一に,それぞれのソフトで持つオブジェクト(描いたもの,パレット,ステージなど)が違いますから, 当然スクリプトも変わります。 window.open は,ブラウザというソフトのみで通用する, windowオブジェクト(windowクラス) の open メソッドです。 windowオブジェクト というものが,そもそも普通のソフトにはありませんから, 当然,その open メソッドも使えません。 ---2つめ--- window.open が仮に Acrobat の JavaScript にあった場合(ありませんが), そのメソッドは,Acrobat または,Adobe Reader が受理して実行します。 ブラウザは全く関係ありません。 私が説明するより, 次のURL(日本語PDF)からの引用を読んでもらった方が良いような気がします。 「Acrobat JavaScript Object Specification」 http://www.adobe.com/jp/support/products/pdfs/acrojs_j.pdf P.40(P.42 / 297) > PDF とHTML の違い > HTML Web ページ用のJavaScript コードの作成に > 慣れている場合、window.open() やdocument.write() > といったメソッドを呼び出したくなるかもしれません。 > しかし、ブラウザ環境で扱い慣れているオブジェクト、 > メソッド、プロパティの多くはPDF > JavaScript では動作せず、存在すらしません。 > なぜならPDF 用のJavaScript は、 > Acrobat またはAcrobat Reader 内で > 動作するからです。 > この場合のランタイムインタプリタは > ブラウザ内にあるものとは異なります。 > PDF JavaScript で使用されるオブジェクトやメソッドの > スコープはPDF ドキュメント自体にあり、 > HTML ページはスコープの外にあります。 - - - - - - - - - - - - - - - - - - - それで, 「Acrobat JavaScript Scripting Reference」(英文PDF) http://partners.adobe.com/public/developer/en/acrobat/sdk/Acro6JS.pdf を調べてみましたら,[168 / 416]ページに, > this.getURL("http://www.adobe.com/", false); というのがあるのを発見しました。 私,ココでの回答のメインが Flash でして, getURLメソッドには慣れています。 Flash の ActionScript にも,window.open() はありません。 ではどうやってFalshからブラウザを小窓で開くかというと, ActionScript の getURLメソッド で, ブラウザに JavaScript の window.open() を投げるのです。 サブウィンドウのOS別表示一覧 / Flash MX 2004 http://www.openspc2.org/reibun/FlashMX2004/sub_window/index.html この方法でできるかも…と思い, Acrobat6 の「高度な編集」から, リンクのプロパティで「アクション」タブを選択し, 「JavaScriptを実行」でいろいろ試してみました。 当然,PDF は ブラウザで開いた状態で実行してみました。 // ---↓同窓で開いてしまう↓--- this.getURL("http://www.google.co.jp/", false); // ---↓同窓で開いてしまう↓--- this.getURL("http://www.google.co.jp/", true); // ---↓同窓で開いてしまう↓--- this.getURL("http://www.google.co.jp/", "_blank"); // ---↓同窓で開いてしまう↓--- this.getURL("http://www.google.co.jp/", window="_blank"); // ---↓フリーズしてしまう↓--- this.getURL("javascript:void(window.open('http://www.google.co.jp/','sbw','width=320,height=240,statusbar=yes'))", false); // ---↓フリーズしてしまう↓--- this.getURL("javascript:void(window.open('http://www.google.co.jp/','_blank','width=320,height=240,statusbar=yes'))"); // ---↓無反応↓--- this.getURL("javascript:window.open('http://www.google.co.jp/','popup',300200);void(0);","_blank"); 惨敗ですね。 他もいろいろやってみましたが, Adobe Reader からブラウザに命令が渡せません。 - - - - - - - - - - - - - - - - - - - というわけで,無理だと思います(思うだけですが)。 getURLメソッド以外に, ブラウザに命令を投げられるようなものを探すと何か出てくるかもしれませんが,私は諦めました。 とにかく,最初に書きましたように, 「Acrobat の JavaScript は Acrobat の JavaScript であって, ブラウザの JavaScript とは全然スクリプトが違う。」 ということと, 「Acrobat の JavaScript は Acrobat の JavaScript であって, Acrobat または,Adobe Reader が実行する。」 ということを念頭に置いて, 「Adobe Reader から,ブラウザ に実行命令を与える方法。」 というものを探せば, ひょっとしたら良い方法が見つかるかもしれません。 ※ たとえば… 取りあえず PDF からは同窓で HTML に移動しておいて, その HTML に window.open 自動実行を仕込んでおいて, それと同時に, history.back 自動実行を仕込んでおいて, 新窓を開きつつ自分自身はまた元の PDF に帰るとか。 (↑考えただけで検証していません…。) 以上です。

uniba25
質問者

お礼

ありがとうございました。 基本的なところを理解していなかったようです。 大変参考になりました。

関連するQ&A