Pergunta

A minha pergunta é semelhante ao "Como posso programmaticly abrir um pdf em um determinado ponto? ", mas o PDF é local, não em um servidor web.

Eu preciso de uma maneira de saltar para uma determinada página em um PDF que está no computador do usuário, que funciona em versões do Acrobat (ou usando um visualizador de PDF alternativo como o Foxit Reader). O PDF vai ser chamado a partir de um aplicativo Java (ele só é usado no Windows, de modo multi-plataforma não é uma obrigação), e agora ele funciona com:

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, isso só funcionará se o usuário final está usando o Acrobat 8 ??para 32 bits, e instalado no local padrão. I próxima tentei usar:

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

pensando que isso iria abrir o navegador de usuários e saltar para essa página, mas ele simplesmente abriu Acrobat na página 1.

Então, eu estou stumpped, e pedindo ajuda.

Foi útil?

Solução

acabei implementar isso usando este código para reg chamada. exe e analisar a saída de HKLM \ SOFTWARE \ Classes.pdf para ver se a sua classe AcroExch, em seguida, obter a linha de comando a partir de HKLM \ SOFTWARE \ classes \ AcroExch.Document \ Shell \ Open \ Command.

A sua hacky, mas funciona.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top