Versão curta:
- Existe alguma maneira de fazer o MS Word 2007 (ou mais recente) codificar hiperlinks de arquivos relativos (um hiperlink apontando para, por exemplo, outro arquivo PDF) usando o Tipo de ação em
Launch
vez deURI
(ambos os tipos especificados na página 653 do Adobe Portable Document Format, PDF Reference, versão 1.7, sexta edição - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Ou é a única solução para implementar um pós-processador que pode alterar todos osURI
hiperlinks de arquivos codificados "errados" para seusLaunch
equivalentes?
Versão elaborada:
Eu tenho dois documentos do Word; doc1.docx
e doc2.docx
(ambos compilados com o MS Word 2007).
Em doc1.docx
que coloco um hiperlink para uma versão em PDF do meu segundo documento ( doc2.pdf
) - agora recebi:
Em seguida, salvei o doc1.docx
arquivo como ambos .docx
e .pdf
- a PDF
geração é gerenciada pelo editor de PDF embutido no MS Word 2007 usando as seguintes opções:
Até aí tudo bem - eu tenho a seguinte estrutura de pastas:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
Então abro doc1.pdf
com o Adobe Reader X (versão 10.1.3) e clico no hiperlink apontando para doc2.pdf
. Como o link é relativo, eu teria adivinhado / assumido que o Adobe Reader X simplesmente abriria o arquivo PDF de destino em uma janela separada ou na mesma instância do Adobe Reader X (dependendo da opção Open cross-document links in same window
especificada em:) Edit -> Preferences -> Documents
.
No entanto, esse não é o caso. Em vez disso, o Adobe Reader X resolve o hiperlink usando o navegador padrão (no meu caso, o Google Chrome v21 + no Windows 7 x64) - e para ser claro - esse é o problema . Desejo que o Adobe Reader X (e a maioria de seus antecessores) resolva apenas o hiperlink abrindo o PDF de destino em outra instância do Adobe Reader X (supondo que eu tenha desmarcado a Open cross-document links in same window
opção). Repetindo o mesmo cenário usando o meu leitor de PDF (padrão); O Sumatra PDF funciona conforme o esperado - O Sumatra PDF abre o arquivo PDF de destino em uma janela separada e mostra o conteúdo dedoc2.pdf
. Então, por que não usar o Sumatra PDF, então você pergunta? Eu adoraria - no entanto, o problema é que estou trabalhando em um projeto com potencialmente muitos usuários finais, e não posso assumir que todos eles usam outro leitor de PDF que não seja o Adobe Reader X -, portanto, não há outra maneira de contornar que descobrir o que está acontecendo com o Adobe Reader X.
Então, para chegar lá, comecei a cavar.
Primeiro, olhando para a barra de endereços no Chrome, é visto que o Adobe Reader X tenta resolver doc2.pdf
usando o file
esquema de URI: file:///C:/superuser/doc2.pdf
- o que parece justo para mim (colar o mesmo URI na Run
caixa de diálogo do Windows 7 causa meu leitor de PDF padrão (Sumatra PDF ) para abrir o arquivo) - mas por que o Adobe Reader X está solicitando que o navegador padrão lide com o PDF?
Para responder a isso, continuei cavando. A abertura doc1.pdf
no bloco de notas ++ revelou que o hiperlink foi codificado usando o URI
Tipo de Ação (consulte as páginas 653 e 662 no Adobe Portable Document Format, PDF Reference, versão 1.7, sexta edição - http://wwwimages.adobe.com/www.adobe .com / content / dam / Adobe / pt / devnet / pdf / pdfs / pdf_reference_1-7.pdf ):
/Type/Action/S/URI/URI(doc2.pdf)
A referência em PDF (p. 662) indica o seguinte sobre o URI
Tipo de ação:
Um identificador de recurso uniforme (URI) é uma cadeia de caracteres que identifica (resolve) um recurso na Internet - geralmente um arquivo que é o destino de um link de hipertexto, embora também possa resolver para uma consulta ou outra entidade.
Então, o que, em primeira mão, parecia um grande bug no Adobe Reader X, começou a parecer uma implementação justa. Pelo menos, nesse ponto, descobri por que o Adobe Reader X se comporta da mesma maneira - resultando em uma nova pergunta a ser respondida: como codifico corretamente um hiperlink de arquivo (por exemplo, um link para doc2.pdf
) de modo que o PDF resultante esteja criando o Adobe Reader X lidar com o próprio link (em vez de solicitar ao navegador padrão que faça seu trabalho)?
Para responder que examinei a especificação do PDF e localizei o Tipo de ação Launch
- sobre esse tipo, a referência em PDF declara o seguinte (p. 659):
Uma ação de inicialização inicia um aplicativo ou abre ou imprime um documento.
Portanto, fazendo a seguinte alteração (usando o bloco de notas ++):
Substituindo:
/Type/Action/S/URI/URI(doc2.pdf)
Com isso:
/Type/Action/S/Launch/F(doc2.pdf)
... O Adobe Reader X resolve o link abrindo o doc2.pdf
arquivo em uma janela separada / em outra instância do Adobe Reader X - assumindo novamente que eu desmarquei a Open cross-document links in same window
opção (viva !!).
E agora, até a pergunta real / final que ainda não consegui resolver - existe alguma maneira de fazer o MS Word 2007 (ou mais recente) codificar hiperlinks de arquivos relativos (um hiperlink apontando para, por exemplo, outro arquivo PDF) usando o Tipo de ação em Launch
vez de URI
(ambos os tipos especificados na página 653 do Adobe Portable Document Format, PDF Reference, versão 1.7, sexta edição - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en /devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Ou é a única solução para implementar algum tipo de aplicativo pós-processador que possa alterar todos os URI
hiperlinks de arquivos codificados "errados" para seus Launch
equivalentes?
Sei que isso pode causar muitos "TLDR" - mas se você conseguir chegar aqui, aprecio muito o seu interesse e espero que você ou outra pessoa possa me indicar a direção certa.
Obrigado.
fonte
Respostas:
Obrigado pelo excelente artigo. Funciona! Não para mim no começo, mas depois descobri que você precisa desativar o 'modo protegido' no adobe X. Não tenho esse problema no adobe 9. Parece-me que o setor está retrocedendo na funcionalidade do nome da segurança.
Assim, no Adobe Reader X, faça:
/Type/Action/S/URI/URI
com/Type/Action/S/Launch/F(
usando um editor hexadecimal adequadoNão existe uma solução fácil para o que queremos fazer: permitir que qualquer usuário com apenas um leitor de PDF sem configurações para se preocupar navegue pela pasta.
Mas obrigado novamente por todo o seu trabalho e pela luz que lança sobre o assunto.
fonte
FWIW, não acho que os links funcionem no Sumatra se o nome do arquivo contiver espaços (colocar aspas ao redor do nome não ajudou, pois o Word parece removê-las ao criar o link). Não acredito que seja possível mudar o comportamento do Word, então ...
Solução nº 1: use um criador de PDF melhor.
Solução alternativa nº 2: crie PDFs com o Word como de costume e use um editor hexadecimal ou um utilitário de linha de comando como http://stahlforce.com/dev/index.php?tool=rep para substituir todas as instâncias necessárias de / Tipo / Ação / S / URI / URI ( com / Tipo / Ação / S / Lançamento / F ( .
fonte
Ré. a questão relativa do hiperlink.
A Ajuda do MS Office afirma que a configuração 'atualizar links ao salvar' (botão do Office / botão de opções do Word / avançado / botão de opções da Web) faz com que a inserção de hiperlinks seja relativa. Se desmarcado, eles se tornam absolutos. No entanto, essa configuração não fez diferença nas minhas tentativas. O que aconteceu foi o ponto em que o arquivo foi salvo. Para criar links relativos, abro um novo arquivo em branco e salvei-o em uma pasta apropriada antes de inserir qualquer link. Na caixa 'Inserir hiperlink', escolha 'pasta existente'. A pasta mostrada na caixa é a pasta que acabou de ser salva - na árvore - para baixo - e não para cima. ou seja, relativo
Para criar links absolutos, abro um novo arquivo em branco e, sem salvá-lo, insiro o link. A caixa de inserção agora mostra a pasta existente no nível superior. Faça uma busca detalhada no arquivo a ser vinculado e o caminho mostrado na parte inferior da caixa é o caminho completo de volta para C :. . . . . .. (mostrando a letra da unidade) ou seja, absoluto.
Ao passar o cursor sobre os links nos dois arquivos do Word, mostra o caminho absoluto completo nos dois casos. No entanto, se a pasta Pai for copiada para outra unidade, o link relativo abrirá a pasta na nova unidade e o link absoluto voltará para a pasta C:, Que é o que eu quero ver. Ainda não descobri como criar os dois tipos de link em um único arquivo. Mas eu não preciso disso de qualquer maneira. Consegui converter os meus arquivos do MS Word em pdf usando a modificação de edição hexadecimal acima e os dois funcionaram, um no modo absoluto e o outro relativo.
Ré. seu 'método de subscrição de edição hexadecimal'
Funcionou bem para mim em alguns casos e não em outros. Eu descobri que tinha que garantir que os nomes dos arquivos de destino não tivessem espaços. Eu os substituí pelo símbolo de sublinhado. Então eles trabalharam.
fonte
Analisei isso agora o mais razoavelmente possível para mim. Uma vez que se relaciona diretamente com a pergunta original, vou apenas passar meu resumo final.
Ré. links absolutos e relativos no mesmo documento
observe o caminho mostrado na parte inferior da caixa de hiperlink Inserir. Se a pasta de nível superior for a pasta escolhida, o link será relativo a ela. Para torná-lo absoluto, use a estrutura em árvore na caixa 'inserir' para perfurar para cima até a letra da unidade. O padrão é para links relativos quando o arquivo foi salvo pela primeira vez na pasta 'pai'.
Etapas para criar uma pasta de vinculação de índice transportável
(com um documento de 'índice' vinculado a arquivos em subpastas.)
Crie uma nova pasta em algum lugar que será a pasta a ser transportada (pasta 'The Parent').
Crie ou coloque subpastas com seus arquivos no pai.
Agora abra um documento do Word 2007 que será o seu 'index doc'. Antes de inserir qualquer link, salve este arquivo no seu 'pai'.
Agora insira o hiperlink. A caixa 'inserir hiperlink' exibirá a estrutura da árvore de pastas / arquivos para baixo a partir do 'pai', ou seja, relativo. Para criar um link absoluto, faça drill up até a letra da unidade.
Salve o arquivo do Word que agora funcionará como seu 'index doc'
Para converter o 'index doc' em pdf, abra o arquivo do word e salve como PDF. Esta versão do documento do Index abrirá arquivos de destino por meio do navegador, baixando-os ou exibindo-os como PDF no navegador.
Para fazer o documento 'Index.pdf' abrir os links em seu aplicativo nativo, modifique o arquivo usando o método de edição hexadecimal descrito anteriormente e substitua / Type / Action / S / URI / URI (para / Type / Action / S / Launch / F (
Nota 3.Important! Antes de modificar o arquivo .pdf, verifique se todos os nomes de pastas e arquivos não têm espaços. Substitua espaços com sublinhado ou traço.
fonte