Способ перехода на страницу в локальном PDF-файле?
Вопрос
Мой вопрос похож на "Как я могу программно открыть 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 для 32bit и установил его в папку по умолчанию.Затем я попробовал использовать:
rundll32 url.dll,FileProtocolHandler file:///C:/Program%20Files/Foo/Bar/Docs/RefMan.pdf#page=24
думал, что это откроет браузер пользователя и перейдет на эту страницу, но он просто открыл Acrobat на странице 1.
Итак, я в затруднении и прошу о помощи.
Решение
В итоге я реализовал это, используя этот код для вызова reg.exe и проанализируйте выходные данные из HKLM\SOFTWARE\Classes.pdf, чтобы увидеть, является ли это классом AcroExch, затем получите командную строку из HKLM\SOFTWARE\Classes\AcroExch.Документ\Оболочка\Открыть\Команда.
Это халтурно, но это работает.