1

私の質問は、 「ある時点でプログラムでPDFを開くにはどうすればよいですか?」に似ています。、ただし、PDFはローカルであり、Webサーバー上ではありません。

ユーザーのコンピューター上にあるPDFの特定のページにジャンプする方法が必要です。これは、Acrobatのバージョン間で機能します(またはFoxit Readerなどの代替PDFビューアーを使用します)。PDFはJavaアプリから呼び出され(Windowsでのみ使用されるため、クロスプラットフォームは必須ではありません)、現在は次の機能で動作します。

int pageNum = 24;
String manualPath = "C:\\Program Files\\Foo\\Bar\\Docs\\RefMan.pdf";
String acrordPath = "C:\\Program Files\\Adobe\\Reader 8.0\\Reader\\AcroRd32.exe";
String cmdString = "\"" + acrordPath + \" /A \"page=" + pageNum + 
    "=OpenActions\" \"" + manualPath + \"";
Process p = Runtime.getRuntime().exec(cmdString);

明らかに、これはエンドユーザーが32ビット用のAcrobat 8​​を使用していて、デフォルトの場所にインストールされている場合にのみ機能します。次に使用してみました:

rundll32 url.dll,FileProtocolHandler file:///C:/Program%20Files/Foo/Bar/Docs/RefMan.pdf#page=24

これでユーザーのブラウザが開き、そのページにジャンプすると思いましたが、1ページでAcrobatを開いただけです。

だから私は困惑し、助けを求めています。

4

1 に答える 1

0

このコードを使用してreg.exeを呼び出し、HKLM\SOFTWARE\Classes.pdfからの出力を解析してAcroExchクラスかどうかを確認し、HKLM\SOFTWARE\Classes\AcroExch.Document\からコマンドラインを取得することで、これを実装しました。シェル\オープン\コマンド.

ハックですが、動作します。

于 2009-04-08T21:45:01.630 に答える