2009-04-08 2 views
1

Мой вопрос похож на "How can I programmaticly open a pdf at a certain point?", но PDF-файл является локальным, а не на веб-сервере.Способ перехода на страницу в локальном формате pdf?

Мне нужен способ перейти на заданную страницу в PDF-файле, который находится на компьютере пользователя, который работает во всех версиях Acrobat (или использует альтернативный просмотрщик PDF, такой как Foxit Reader). 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 ​​для 32 бит и устанавливает его в папку по умолчанию. Затем я попытался с помощью:

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

думая, что это откроет пользователи браузера и перейти на эту страницу, но он просто открыл Acrobat на странице 1.

Так что я stumpped, и с просьбой о помощи.

ответ

0

я в конечном итоге реализации этого с помощью this code вызвать reg.exe и разобрать выход из HKLM \ SOFTWARE \ Classes.pdf, чтобы увидеть, если его класс AcroExch, а затем получить командную строку из HKLM \ SOFTWARE \ Classes \ AcroExch .Document \ Shell \ Open \ Command.

Его взломанный, но он работает.

Смежные вопросы