Domanda

La mia domanda è simile a "Come posso aprire a livello di codice un PDF a un certo punto?", ma il PDF è locale, non su un server web.

Ho bisogno di un modo per passare a una determinata pagina in un PDF presente sul computer dell'utente, che funzioni su tutte le versioni di Acrobat (o utilizzando un visualizzatore PDF alternativo come Foxit Reader).Il PDF verrà richiamato da un'app Java (viene utilizzata solo su Windows, quindi la multipiattaforma non è obbligatoria) e al momento funziona 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);

Ovviamente funzionerà solo se l'utente finale utilizza Acrobat 8 ​​per 32 bit e lo ha installato nella posizione predefinita.Successivamente ho provato a utilizzare:

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

pensando che questo avrebbe aperto il browser dell'utente e sarebbe passato a quella pagina, ma ha semplicemente aperto Acrobat a pagina 1.

Quindi sono perplesso e chiedo aiuto.

È stato utile?

Soluzione

Ho finito per implementarlo utilizzando questo codice per chiamare reg.exe e analizzare l'output da HKLM\SOFTWARE\Classes.pdf per vedere se si tratta della classe AcroExch, quindi ottenere la riga di comando da HKLM\SOFTWARE\Classes\AcroExch.Document\Shell\Open\Command.

È complicato, ma funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top