Pregunta

Mi pregunta es similar a "¿Cómo puedo programmaticly abrir un archivo pdf en un cierto punto?", pero el PDF es local, y no en un servidor web.

Necesito una manera de saltar a una página determinada en un PDF que está en el ordenador de los usuarios, que funciona a través de las versiones de Acrobat (o el uso de una alternativa visor de PDF como Foxit Reader).El PDF es el que va a ser llamada desde una aplicación Java (sólo se utiliza en Windows, por lo que la cruz-plataforma no es una obligación), y ahora trabaja con:

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);

Obviamente, esto sólo funcionará si el usuario final es el uso de Acrobat 8 de 32 bits, y se ha instalado en la ubicación predeterminada.Me próximo intentado usar:

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

pensando que esto iba a abrir el navegador del usuario y saltar a la página, pero simplemente abrió Acrobat en la página 1.

Así que estoy stumpped, y pidiendo ayuda.

¿Fue útil?

Solución

Terminé la implementación de este mediante el uso de este código para llamar reg.exe y analizar el resultado de HKLM\SOFTWARE\Classes.pdf para ver si se trata de la AcroExch de la clase, a continuación, obtener la línea de comandos de HKLM\SOFTWARE\Classes\AcroExch.Documento\Shell\Open\Command.

Su chapucero pero funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top