9 votos

MS Word 2007+ - ¿Puede codificar los hipervínculos utilizando el tipo de acción PDF "Launch" en lugar de "URI" al publicar un archivo ".docx" en PDF?

La versión corta:

  • ¿Hay alguna manera de hacer que MS Word 2007 ( o más reciente ) codifique los hipervínculos relativos a archivos ( un hipervínculo que apunta, por ejemplo, a otro archivo PDF ) utilizando el tipo de acción Launch en lugar de URI ( ambos tipos especificados en la página 653 del formato de documento portátil de Adobe, PDF Reference, versión 1.7, sexta edición - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )? ¿O la única solución es implementar un post-procesador que pueda cambiar todos los URI hipervínculos de archivos codificados a su Launch ¿equivalente?

Versión elaborada:

Tengo dos documentos de Word; doc1.docx y doc2.docx ( ambos compilados con MS Word 2007 ).

En doc1.docx Coloco un hipervínculo a una versión en PDF de mi segundo documento ( doc2.pdf ) - así que ahora tengo:

Properties of the <code>doc2.pdf</code> hyperlink in <code>doc1.docx</code>

A continuación, guardo el doc1.docx como ambos .docx y .pdf - la PDF El editor de PDF integrado en MS Word 2007 se encarga de la generación de los archivos mediante las siguientes opciones:

MS Word 2007 PDF Publish Properties

Hasta aquí todo bien - entonces tengo la siguiente estructura de carpetas:

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

Entonces abro doc1.pdf con Adobe Reader X ( versión 10.1.3 ) y haga clic en el hipervínculo que señala doc2.pdf . Como el enlace es relativo, habría supuesto que Adobe Reader X simplemente abriría el archivo PDF de destino en una ventana separada o en la misma instancia de Adobe Reader X (dependiendo de la opción Open cross-document links in same window especificado en: Edit -> Preferences -> Documents ).

Sin embargo, esto es no el caso. En cambio, Adobe Reader X resuelve el hipervínculo utilizando el navegador por defecto ( en mi caso Google Chrome v21+ en Windows 7 x64) - y para ser claros -. este es el problema . Quiero que Adobe Reader X ( y la mayoría de sus predecesores ) se limite a resolver el hipervínculo abriendo el PDF de destino en otra instancia de Adobe Reader X ( suponiendo que he desmarcado el Open cross-document links in same window opción ). Repitiendo el mismo escenario usando mi lector de PDF ( por defecto ); Sumatra PDF funciona como se esperaba - Sumatra PDF abre el archivo PDF de destino en una ventana separada y me muestra el contenido de doc2.pdf . Entonces, ¿por qué no utilizar Sumatra PDF? Me hubiera encantado, pero el problema es que estoy trabajando en un proyecto con muchos usuarios finales y no puedo asumir que todos ellos utilicen otro lector de PDF que no sea Adobe Reader X, así que no hay otra forma de averiguar qué pasa con Adobe Reader X.

Así que para llegar allí, empecé a cavar.

En primer lugar, mirando la barra de direcciones en Chrome se ve que Adobe Reader X intenta resolver doc2.pdf utilizando el file Esquema URI: file:///C:/superuser/doc2.pdf - lo que me parece justo ( pegando el mismo URI en el Run en Windows 7 hace que mi lector de PDF por defecto ( Sumatra PDF ) abra el archivo ) - pero ¿por qué Adobe Reader X pide al navegador por defecto que maneje el PDF?

Para responder a eso, seguí indagando. Abriendo doc1.pdf en el bloc de notas++ reveló que el hipervínculo ha sido codificado utilizando el URI Tipo de acción ( ver p. 653 y 662 en el Adobe Portable Document Format, PDF Reference, versión 1.7, sexta edición - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf ):

/Type/Action/S/URI/URI(doc2.pdf)

La referencia del PDF ( p. 662 ) dice lo siguiente sobre el URI Tipo de acción:

Un identificador uniforme de recursos (URI) es una cadena que identifica (resuelve) un recurso en Internet, normalmente un archivo que es el destino de un enlace de hipertexto, aunque también puede resolver una consulta u otra entidad.

Así pues, lo que a primera vista parecía un error importante en Adobe Reader X empezó a parecer una implementación justa. Al menos, en este punto, he descubierto por qué Adobe Reader X se comporta así - lo que ha dado lugar a una nueva pregunta que responder: ¿cómo puedo codificar correctamente un hipervínculo de archivo ( por ejemplo, un enlace a doc2.pdf ) de manera que el PDF resultante hace que Adobe Reader X se encargue del enlace por sí mismo (en lugar de pedir al navegador por defecto que haga su trabajo)?

Para responder a esto, volví a mirar la especificación del PDF y encontré el tipo de acción Launch - sobre ese tipo, la referencia del PDF dice lo siguiente ( p. 659 ):

Una acción de lanzamiento lanza una aplicación o abre o imprime un documento.

Así que haciendo el siguiente cambio ( usando notepad++ ):

Sustituyendo:

/Type/Action/S/URI/URI(doc2.pdf)

Con esto:

/Type/Action/S/Launch/F(doc2.pdf)

... Adobe Reader X resuelve entonces el enlace abriendo doc2.pdf archivo en una ventana separada / otra instancia de Adobe Reader X - de nuevo asumiendo que he desmarcado la Open cross-document links in same window opción (¡hurra!).

Y ahora vamos a la pregunta real / final que todavía no he logrado resolver - ¿hay alguna manera de hacer que MS Word 2007 ( o más reciente ) codifique los hipervínculos relativos de archivos ( un hipervínculo que apunta a, por ejemplo, otro archivo PDF ) utilizando el tipo de acción Launch en lugar de URI ( ambos tipos especificados en la página 653 del formato de documento portátil de Adobe, PDF Reference, versión 1.7, sexta edición - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )? ¿O la única solución es implementar algún tipo de aplicación post-procesadora que pueda cambiar todos los URI hipervínculos de archivos codificados a su Launch ¿equivalente?

Sé que esto puede causar un montón de "TLDR" - pero si se las arregla para llegar aquí realmente aprecio su interés y espero que usted o alguien más me puede apuntar en la dirección correcta.

Gracias.

2voto

Bob Brown Puntos 21

Gracias por su excelente artículo. Funciona. Al principio no para mí, pero luego descubrí que hay que desactivar el "modo protegido" en adobe X. No tengo este problema en absoluto en adobe 9. Me parece que la industria está retrocediendo en funcionalidad en nombre de la seguridad.

Así que en Adobe Reader X hacer:

  1. Asegúrese de que abrir documentos cruzados.. está sin revisar. (como usted dijo)
  2. Desactivar el modo protegido: Edición " Preferencias " General
  3. Buscar y reemplazar /Type/Action/S/URI/URI con /Type/Action/S/Launch/F( utilizando un editor hexadecimal adecuado

No hay una solución fácil para lo que queremos hacer, que es permitir a cualquier usuario con sólo un lector de PDF sin tener que preocuparse por la configuración, navegar por una carpeta.
Pero gracias de nuevo por todo su trabajo y la luz que arroja sobre el tema.

0voto

Karan Puntos 37697

Por cierto, no creo que los enlaces funcionen en Sumatra si el nombre del archivo contiene espacios (poner comillas alrededor del nombre no ayudó ya que Word parece eliminarlos al crear el enlace). No creo que sea posible cambiar el comportamiento de Word, así que...

Solución # 1: Utilice un mejor creador de PDF.

Solución nº 2: Cree los PDFs con Word como siempre, y luego utilice un editor hexadecimal o una utilidad de línea de comandos como http://stahlforce.com/dev/index.php?tool=rep para sustituir todas las instancias necesarias de /Tipo/Acción/S/URI/URI( con /Tipo/Acción/S/Lanzamiento/F( .

0voto

Bob Brown Puntos 21

Re. la cuestión del hipervínculo relativo.

La ayuda de MS Office indica que la configuración "actualizar enlaces al guardar" (botón Office botón de Office/botón de opciones de palabra/botón avanzado/botón de opciones web) hace que la inserción de los hipervínculos sea relativa. Si se desmarca, se convierten en absolutos. Sin embargo, esta Sin embargo, este ajuste no supuso ninguna diferencia en mis intentos. Lo que sí lo hizo fue el punto en el que se guardó el archivo. archivo fue guardado. Para hacer enlaces relativos abrí un nuevo archivo en blanco y lo guardé en una carpeta carpeta apropiada antes de insertar cualquier enlace. En el cuadro "Insertar hipervínculo". elija "carpeta existente". La carpeta que se muestra en el cuadro es entonces la carpeta que se acaba de guardada en el árbol hacia abajo - no hacia arriba.

Para hacer enlaces absolutos abro un nuevo archivo en blanco y sin guardarlo inserto el enlace. El cuadro de inserción muestra ahora la carpeta existente en la parte superior superior. Descienda hasta el archivo a enlazar y la ruta mostrada en la parte inferior de la caja es la ruta completa de vuelta a C:. . . . .. (mostrando la letra de la unidad) es decir, absoluta.

Al pasar el cursor por encima de los enlaces en los dos archivos de Word se muestra la ruta absoluta en ambos casos. Sin embargo, si la carpeta Padre se copia en otra unidad, el enlace relativo abre la carpeta en la nueva unidad y el enlace absoluto vuelve a la carpeta de la unidad C:, que es lo que quiero ver. Todavía no he descubierto cómo hacer ambos tipos de enlace en un solo archivo. Pero No necesito esto de todos modos. Pude convertir mis dos archivos de MS Word a pdf usando tu modificación de hex-edit modificación anterior, y los dos trabajaron, uno en modo absoluto el otro relativo.

Re. su "método de subsitución de edición hexagonal

A mí me ha funcionado bien en algunos casos y en otros no. Descubrí que tenía que asegurarme que los nombres de los archivos de destino no tuvieran espacios. Los sustituí por el símbolo símbolo de guión bajo. Entonces funcionaron.

0voto

Bob Brown Puntos 21

Ahora he tocado fondo hasta donde es razonablemente posible para mí. Dado que se relaciona directamente con la pregunta original, me limitaré a transmitir mi resumen final.

Re. enlaces absolutos y relativos en el mismo documento

mira la ruta que se muestra en la parte inferior del cuadro de inserción de hipervínculos. Si la carpeta de nivel superior es la elegida, el enlace será relativo a ella. Para que sea absoluto, utilice la estructura de árbol en el cuadro de "inserción" para avanzar hasta la letra de la unidad. Por defecto, los enlaces son relativos cuando el archivo se guarda por primera vez en la carpeta "padre".

Pasos para crear una carpeta transportable con enlaces a índices

(con un documento "índice" que enlaza con los archivos de las subcarpetas).

  1. Cree una nueva carpeta en algún lugar que será la carpeta que se transportará (la carpeta "El padre").

  2. Hacer o colocar subcarpetas con sus archivos en el Padre.

  3. Ahora abra un documento de Word 2007 que será su "documento índice". Antes de insertar cualquier enlace, guarde este archivo en su "padre".

  4. Ahora haga "insertar hipervínculo". El cuadro "insertar hipervínculo" mostrará la estructura del árbol de carpetas/archivos hacia abajo desde el "padre", es decir, relativo. Para hacer un enlace absoluto, descienda hasta la letra de la unidad.

  5. Guarde el archivo de Word que ahora funcionará como su "documento índice".

  6. Para convertir el 'index doc' a pdf abre el archivo de word y haz guardar como PDF. Esta versión del documento índice abrirá los archivos de destino a través del navegador, ya sea descargándolos o mostrándolos como PDF dentro del navegador.

  7. Para hacer que el documento 'Index.pdf' abra los enlaces en su aplicación nativa modifica el archivo usando el método de edición hexagonal descrito anteriormente y sustituye /Type/Action/S/URI/URI( por /Type/Action/S/Launch/F(

  8. 3.¡Nota importante! Antes de modificar el archivo .pdf, asegúrese de que todos los nombres de carpetas y archivos no tienen espacios. Sustituya los espacios por guiones bajos o guiones.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: