2009-04-08 51 views
1

我的問題類似於"How can I programmaticly open a pdf at a certain point?",但PDF是本地的,而不是在Web服務器上。跳轉到本地pdf中的頁面的方式?

我需要一種方法來跳轉到用戶計算機上的PDF中的指定頁面,該PDF可以跨Acrobat版本(或使用其他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

所以我stumpped上打開Acrobat和尋求幫助。

回答

0

我最終通過使用this code來調用reg.exe並分析來自HKLM \ SOFTWARE \ Classes.pdf的輸出以查看它的AcroExch類,然後從HKLM \ SOFTWARE \ Classes \ AcroExch獲取命令行.Document \殼牌\打開\命令。

其hacky,但它的作品。