MS Word 2007+ - ele pode codificar hiperlinks usando o Tipo de ação do PDF "Iniciar" em vez de "URI" ao publicar um arquivo ".docx" em PDF?


9

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 Launchvez 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 um pós-processador que pode alterar todos os URIhiperlinks de arquivos codificados "errados" para seus Launchequivalentes?

Versão elaborada:

Eu tenho dois documentos do Word; doc1.docxe doc2.docx(ambos compilados com o MS Word 2007).

Em doc1.docxque coloco um hiperlink para uma versão em PDF do meu segundo documento ( doc2.pdf) - agora recebi:

Propriedades do hiperlink <code> doc2.pdf </code> em <code> doc1.docx </code>

Em seguida, salvei o doc1.docxarquivo como ambos .docxe .pdf- a PDFgeração é gerenciada pelo editor de PDF embutido no MS Word 2007 usando as seguintes opções:

Propriedades de publicação em PDF do MS Word 2007

Até aí tudo bem - eu tenho a seguinte estrutura de pastas:

/superuser
    - doc1.docx
    - doc1.pdf
    - doc2.docx
    - doc2.pdf

Então abro doc1.pdfcom 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 windowespecificada 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 windowopçã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.pdfusando o fileesquema de URI: file:///C:/superuser/doc2.pdf- o que parece justo para mim (colar o mesmo URI na Runcaixa 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.pdfno bloco de notas ++ revelou que o hiperlink foi codificado usando o URITipo 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 URITipo 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.pdfarquivo em uma janela separada / em outra instância do Adobe Reader X - assumindo novamente que eu desmarquei a Open cross-document links in same windowopçã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 Launchvez 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 URIhiperlinks de arquivos codificados "errados" para seus Launchequivalentes?

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.


2
Não tenho certeza se os comentários 'esbarram' em uma pergunta, mas vale a pena ler.
Tanner Faulkner

11
Obrigado pela sua pergunta. Por si só, contém muitos detalhes e uma solução possível. Você conseguiu encontrar uma maneira melhor de fazer isso? Substituir a ação funciona bem.
Farish 14/01

11
@Farish Infelizmente não. Até agora, o uso de um pós-processador tem sido a solução que funciona para mim. Se eu algum dia encontrar uma maneira melhor, vou postar uma atualização aqui :)
Lasse Christiansen

Respostas:


2

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:

  1. Verifique se a opção Abrir documentos cruzados está desmarcada. (como você disse)
  2. Desativar o modo protegido: Editar »Preferências» Geral
  3. Pesquisar e substituir /Type/Action/S/URI/URIcom /Type/Action/S/Launch/F(usando um editor hexadecimal adequado

Nã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.


Fico feliz que ele funcione usando a idéia de um "pós-processador". Desde que postei a pergunta, ainda não encontrei uma solução melhor, por isso continuarei usando a etapa de pós-processamento até que exista uma solução melhor. Graças à sua entrada :)
Lasse Christiansen

0

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 ( .


0

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.


0

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

  1. Crie uma nova pasta em algum lugar que será a pasta a ser transportada (pasta 'The Parent').

  2. Crie ou coloque subpastas com seus arquivos no pai.

  3. Agora abra um documento do Word 2007 que será o seu 'index doc'. Antes de inserir qualquer link, salve este arquivo no seu 'pai'.

  4. 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.

  5. Salve o arquivo do Word que agora funcionará como seu 'index doc'

  6. 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.

  7. 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 (

  8. 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.