プロが教えるわが家の防犯対策術!

Adobe Acrobatのリンクツールを使用し、「A.pdf」の特定の場所をクリックすると、「B.pdfの3ページ目」を開くように設定しようと思います。
 
下記のJavaScript(相対パス)で、「B.pdf」は開けるようになったのですが、ページを指定する方法がわかりません。
 
app.openDoc("B.pdf");
 
ちなみに、「#page=3」では、「B.pdf」すら開きませんでした。
app.openDoc("B.pdf#page=3");
 
恐れ入りますが、JavaScriptの記述についてご存じの方がおられましたら、ご教示願います。
 

A 回答 (3件)

ANo2です。




もう少し新しいドキュメントがみつかりました。
 http://kb2.adobe.com/jp/cps/511/511727/attachmen …


これによれば、disclosed属性の設定はファイルオープン時に行う必要があるみたいですね。
(ファイル属性値として保持しているものだと勘違いしていました。)

それなので、対象となるPDF側のスクリプトに
 this.disclosed = true;
を登録しておいて、open時に実行されるようにしておけばOKです。

あとは以前の回答通り、開く側のPDFから
 var d = app.openDoc("hogehoge.pdf");
 d.pageNum = 2;
のような要領で呼び出せば、指定ページを開くことができます。
(pageNumは0スタートです)

開くだけであれば変数を介さずに、
 app.openDoc("testSample.pdf").pageNum = 5;
のような記述でも、指定ページが表示されます。


また、上記ドキュメントによれば、対象PDF側にnamed destinationが設定してあれば、disclosedの設定がされていなくても
 app.openDoc({ cPath: "hoge.pdf", cDest: "myDest" });
といった構文で、直接表示することも可能なようです。
(こちらは試していません)
    • good
    • 0
この回答へのお礼

お礼を申し上げるのが遅くなり、大変失礼致しました。
 
この度は、丁寧かつ詳細なご回答を頂き、ありがとうございます。
ドキュメントまでご紹介くださり、重ねてお礼申しあげます。
(活用しております。)
 
早速、教えていただいた方法を試みたところ、無事思っていた通りに動作させることができ、本当に嬉しかったです。
 
また何かあれば、ご相談させて頂く事もあると思いますが、その際はよろしくお願い致します。
 

お礼日時:2014/07/16 11:04

PDFのスクリプトはさわったことがないのですが…




ネットで検索してみたところ、スクリプトに関するドキュメントが以下にありました。
バージョンがメチャ古いものですが、主なオブジェクト、プロパティ、メソッドについての参考にはなりそうに思います。
 http://www.adobe.com/jp/support/products/pdfs/ac …
(もっと新しいものがありそうですが、見つかりませんでした。)

これによれば、openDocメソッドがドキュメントを返すので、そのpageNum(R/W)プロパティに表示のページを設定すればよさそうです。
ただし、ドキュメントを返す条件として対象ドキュメントのdisclosed属性がtrue(デフォルトはfalse)に設定されていることとなっています。
同様の記述がAdobeのサイトににもありました。(こちらも古そうですが…)
 http://kb2.adobe.com/jp/cps/221/221194.html

…で、ドキュメントのdisclosedをtrueに設定する方法ですが・・・
スクリプトを作成して試してみましたが、対象ドキュメント側で
 this.disclosed = true;
を実行しようとしても止まってしまうようです。
ちなみに属性値の取得はできて、falseが返ってきます。


残念ながら、ネットでちょいと調べた程度ではわかりませんでした。
もう少しなんですが、回答になってませんね。
まぁ、何かの参考にでもなれば・・・
    • good
    • 0

>ちなみに、「#page=3」では、「B.pdf」すら開きませんでした。


当たり前でんがな!
スクリプトはやのぉ~、一つのことしか行えまへん。
「このBを開いて3ページを表示」を構文にせんとあきまへん。
で、
>app.openDoc("B.pdf");
これで「Bを開く」はでてるんでっしゃろ。
じゃ次は「3ページに移動」ですわ。
this.pageNum = 2;
移動は「pageNum」で行いますんや。
1ページは「0」やさかい、3ページは「2」でっせ!

app.openDoc("B.pdf");
this.pageNum = 2;

これで行かへんやろか・・・
もしダメやったら
http://ac-javascript.nnn2.com/?p=7
この「ページプロパティ」の設定することでんな!
Bファイル1ページ目「ページプロパティ」に
this.pageNum = 2;
を埋め込む
試してみなはれ!
    • good
    • 0
この回答へのお礼

お礼がえろう遅うなってしもて、すんまへん。
回答おおきに。
 
できひん~どないしょ~と難儀してたんで、むちゃ勉強になってました。
ありがとさんどした。
 
また何やありましたら、よろしゅうおたのもうします。
 

お礼日時:2014/07/16 12:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!