2009-04-08 28 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,但它的作品。