2009-04-08 7 views
1

Ma question est similaire à "How can I programmaticly open a pdf at a certain point?", mais le fichier PDF est local, pas sur un serveur Web.Façon de sauter à une page dans un fichier pdf local?

J'ai besoin d'un moyen de passer à une page donnée dans un fichier PDF sur l'ordinateur de l'utilisateur, qui fonctionne avec plusieurs versions d'Acrobat (ou en utilisant une visionneuse PDF alternative comme Foxit Reader). Le PDF va être appelé à partir d'une application Java (il est utilisé uniquement sous Windows, donc multi-plateforme est pas un must), et maintenant il fonctionne avec:

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

Évidemment, cela ne fonctionnera que si l'utilisateur final utilise Acrobat 8 ​​pour 32 bits et l'a installé dans l'emplacement par défaut. Je prochaine essayé d'utiliser:

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

pensant que cela ouvrirait le navigateur des utilisateurs et accéder à cette page, mais simplement ouvert Acrobat à la page 1.

Je suis stumpped, et demander de l'aide.

Répondre

0

Je fini par mettre en œuvre cela en utilisant this code pour appeler reg.exe et analyser la sortie de HKLM \ SOFTWARE \ Classes.pdf pour voir si sa classe AcroExch, puis obtenir la ligne de commande à partir HKLM \ SOFTWARE \ Classes \ AcroExch .Document \ Shell \ Open \ Command.

Son hacky, mais cela fonctionne.