跳转到本地pdf页面的方式?

时间:2009-04-08 15:34:27

标签: java pdf acrobat

我的问题类似于"How can I programmaticly open a pdf at a certain point?",但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);

显然,这只有在最终用户使用Acrobat 8​​ for 32bit并将其安装在默认位置时才有效。我接下来尝试使用:

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

认为这会打开用户浏览器并跳转到该页面,但它只是在第1页打开了Acrobat。

所以我很难过,并寻求帮助。

1 个答案:

答案 0 :(得分:0)

我最终通过使用this code调用reg.exe并解析HKLM \ SOFTWARE \ Classes.pdf的输出以查看它是否为AcroExch类,然后从HKLM \ SOFTWARE获取命令行来实现此目的类\ AcroExch.Document \壳牌\打开\命令。

它的hacky,但它确实有效。