Способ перехода на страницу в локальном PDF-файле?

StackOverflow https://stackoverflow.com/questions/730554

  •  06-09-2019
  •  | 
  •  

Вопрос

Мой вопрос похож на "Как я могу программно открыть 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.Документ\Оболочка\Открыть\Команда.

Это халтурно, но это работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top