Version corta:
- ¿Hay alguna manera de hacer que MS Word 2007 (o más reciente) codifique hipervínculos de archivos relativos (un hipervínculo que apunta, por ejemplo, a otro archivo PDF) usando el Tipo de acción en
Launch
lugar deURI
(ambos tipos especificados en la página 653 del Formato de documento portátil de Adobe, Referencia en PDF, 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 es la única solución para implementar un postprocesador que puede cambiar todos losURI
hipervínculos de archivos codificados "incorrectos" a suLaunch
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
) - por lo que ahora que tengo:
Luego guardo el doc1.docx
archivo como ambos .docx
y .pdf
- la PDF
generación es manejada por el editor de PDF incorporado en MS Word 2007 usando las siguientes opciones:
Hasta ahora todo bien, entonces tengo la siguiente estructura de carpetas:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
Luego abro doc1.pdf
con Adobe Reader X (versión 10.1.3) y hago clic en el hipervínculo que apunta doc2.pdf
. Como el enlace es relativo, habría adivinado / asumido 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
especificada en:) Edit -> Preferences -> Documents
.
Sin embargo, ese no es el caso. En cambio, Adobe Reader X resuelve el hipervínculo utilizando el navegador predeterminado (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) resuelva el hipervínculo abriendo el PDF de destino en otra instancia de Adobe Reader X (suponiendo que haya desmarcado la Open cross-document links in same window
opción). Repetir el mismo escenario con mi lector de PDF (predeterminado); Sumatra PDF funciona como se esperaba: Sumatra PDF abre el archivo PDF de destino en una ventana separada y me muestra el contenido dedoc2.pdf
. Entonces, ¿por qué no usar Sumatra PDF y luego lo preguntas? Me hubiera encantado, sin embargo, el problema es que estoy trabajando en un proyecto con una gran cantidad de usuarios finales, y no puedo suponer que todos usan otro lector de PDF que Adobe Reader X, por lo que no hay otra forma que descubrir qué está pasando con Adobe Reader X.
Entonces, para llegar allí, comencé a cavar.
Primero, al mirar la barra de direcciones en Chrome, se ve que Adobe Reader X intenta resolver doc2.pdf
usando el file
esquema URI: file:///C:/superuser/doc2.pdf
- lo que me parece justo (pegar el mismo URI en el Run
cuadro de diálogo en Windows 7 causa mi lector de PDF predeterminado (Sumatra PDF ) para abrir el archivo), pero ¿por qué Adobe Reader X le pide al navegador predeterminado que maneje el PDF?
Para responder eso, continué cavando. La apertura doc1.pdf
en notepad ++ reveló que el hipervínculo se ha codificado utilizando el URI
Tipo de acción (consulte las páginas 653 y 662 en el 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 / es / devnet / pdf / pdfs / pdf_reference_1-7.pdf ):
/Type/Action/S/URI/URI(doc2.pdf)
La referencia en PDF (p. 662) establece 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, generalmente un archivo que es el destino de un enlace de hipertexto, aunque también puede resolver una consulta u otra entidad.
Entonces, lo que de primera mano parecía un error importante en Adobe Reader X comenzó a verse como una implementación justa. Al menos, en este punto, descubrí por qué Adobe Reader X se comporta como lo hace, lo que resultó en una nueva pregunta para responder: ¿cómo codifico correctamente un hipervínculo de archivo (por ejemplo, un enlace a doc2.pdf
) de modo que el PDF resultante esté haciendo Adobe Reader X manejar el enlace en sí (en lugar de pedirle al navegador predeterminado que haga su trabajo)?
Para responder a eso, eché otro vistazo a la especificación de PDF y encontré el Tipo de acción Launch
: sobre ese tipo, la referencia del PDF establece lo siguiente (p. 659):
Una acción de inicio inicia una aplicación o abre o imprime un documento.
Entonces, haciendo el siguiente cambio (usando notepad ++):
Sustitución:
/Type/Action/S/URI/URI(doc2.pdf)
Con este:
/Type/Action/S/Launch/F(doc2.pdf)
... Adobe Reader X resuelve el enlace abriendo el doc2.pdf
archivo en una ventana separada / otra instancia de Adobe Reader X, una vez más, suponiendo que haya desmarcado la Open cross-document links in same window
opción (¡hurra!).
Y ahora, hasta la pregunta real / final que aún no he logrado resolver, ¿hay alguna manera de hacer que MS Word 2007 (o más reciente) codifique hipervínculos de archivos relativos (un hipervínculo que apunta, por ejemplo, a otro archivo PDF) usando el Tipo de acción en Launch
lugar de URI
(ambos tipos especificados en la página 653 de 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 )? ¿O es la única solución para implementar algún tipo de aplicación de postprocesador que pueda cambiar todos los URI
hipervínculos de archivos codificados "incorrectos" a su Launch
equivalente?
Sé que esto podría causar mucho "TLDR", pero si logras llegar aquí, realmente aprecio tu interés y espero que tú o alguien más puedan señalarme en la dirección correcta.
Gracias.
fuente
Respuestas:
Gracias por tu excelente artículo. ¡Funciona! Al principio no para mí, pero luego descubrí que tienes 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 la funcionalidad en el Nombre de seguridad.
Entonces, en Adobe Reader X, haga lo siguiente:
/Type/Action/S/URI/URI
con/Type/Action/S/Launch/F(
el uso de un editor hexadecimal adecuadaNo hay una solución fácil para lo que queremos hacer que sea permitir que cualquier usuario con solo un lector de PDF sin configuraciones se preocupe por navegar por una carpeta.
Pero gracias de nuevo por todo su trabajo y la luz que arroja sobre el tema.
fuente
FWIW, 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: use un mejor creador de PDF.
Solución # 2: cree archivos PDF con Word como de costumbre, luego use un editor hexadecimal o una utilidad de línea de comandos como http://stahlforce.com/dev/index.php?tool=rep para reemplazar todas las instancias requeridas de / Type / Acción / S / URI / URI ( con / Type / Action / S / Launch / F ( .
fuente
Re. La pregunta relativa del hipervínculo.
La Ayuda de MS Office indica que la configuración 'actualizar enlaces al guardar' (botón de Office / botón de opciones de Word / botón avanzado / web otions) hace que la inserción de hipervínculos sea relativa. Si no se controla, se vuelven absolutos. Sin embargo, esta configuración no hizo ninguna diferencia en mis intentos. Lo que hizo fue el punto en el que se guardó el archivo. Para hacer enlaces relativos, abro un nuevo archivo en blanco y lo guardo en una carpeta apropiada antes de insertar cualquier enlace. En el cuadro "Insertar hipervínculo", seleccione "carpeta existente". La carpeta que se muestra en el cuadro es la carpeta que acaba de guardar en árbol 'hacia abajo, no hacia arriba. es decir, pariente
Para hacer enlaces absolutos abro un nuevo archivo en blanco y sin guardarlo inserto el enlace. El cuadro de inserción ahora muestra la carpeta existente en el nivel superior. Desplácese hasta el archivo que se va a vincular y la ruta que se muestra en la parte inferior del cuadro es la ruta completa de regreso a C :. . . . . .. (mostrando la letra de unidad) es decir, absoluto.
Al pasar el cursor sobre los enlaces en los dos archivos de Word, se muestra la ruta absoluta completa en ambos casos. Sin embargo, si la carpeta principal se copia en otra unidad, el enlace relativo abre la carpeta en la nueva unidad y el enlace absoluto vuelve a la carpeta C: unidad, que es lo que quiero ver. Todavía no he descubierto cómo hacer ambos tipos de enlaces en un solo archivo. Pero no necesito esto de todos modos. Pude convertir mis archivos de MS Word a pdf usando su modificación de edición hexadecimal anterior, y ambos funcionaron, uno en modo absoluto y el otro relativo.
Re. su 'método de sustitución de edición hexadecimal'
Funcionó bien para mí en algunos casos y no en otros. Descubrí que tenía que asegurarme de que los nombres de los archivos de destino no tengan espacios en ellos. Los sustituí con el símbolo de subrayado. Luego trabajaron.
fuente
He tocado fondo ahora lo más razonablemente posible para mí. Como se relaciona directamente con la pregunta original, simplemente pasaré mi resumen final.
Re. enlaces absolutos y relativos en el mismo documento
mire la ruta que se muestra en la parte inferior del cuadro Insertar hipervínculo. Si la carpeta de nivel superior es su carpeta elegida, entonces el enlace será relativo a ella. Para hacerlo absoluto, use la estructura de árbol en el cuadro 'insertar' para perforar hacia arriba hasta la letra de la unidad. El valor predeterminado es para enlaces relativos cuando el archivo se ha guardado por primera vez en la carpeta 'padre'.
Pasos para crear una carpeta de enlace de índice transportable
(con un documento 'índice' que se vincula a archivos en subcarpetas).
Cree una nueva carpeta en algún lugar que será la carpeta que se transportará (carpeta 'The Parent').
Cree o coloque subcarpetas con sus archivos en el padre.
Ahora abra un documento de Word 2007 que será su 'documento de índice'. Antes de insertar cualquier enlace, guarde este archivo en su 'padre'.
Ahora haga 'insertar hipervínculo'. El cuadro 'insertar hipervínculo' mostrará la estructura de árbol de carpetas / archivos hacia abajo desde el 'padre', es decir, relativo. Para hacer un enlace absoluto, desplace hacia arriba hasta la letra de la unidad.
Guarde el archivo de Word que ahora funcionará como su 'documento de índice'
Para convertir el 'documento de índice' a pdf, abra el archivo de Word y guárdelo como PDF. Esta versión del documento Index abrirá los archivos de destino a través del navegador descargándolos o mostrándolos como PDF dentro del navegador.
Para hacer que el documento 'Index.pdf' abra los enlaces en su aplicación nativa, modifique el archivo utilizando el método de edición hexadecimal descrito anteriormente y substite / Type / Action / S / URI / URI (para / Type / Action / S / Launch / F (
3. ¡Nota importante! Antes de modificar el archivo .pdf, asegúrese de que todos los nombres de carpetas y archivos no tengan espacios. Espacios sustitutos con guión bajo o guión.
fuente