Versione breve:
- Esiste un modo in cui posso fare in modo che MS Word 2007 (o più recente) codifichi i collegamenti ipertestuali relativi ai file (un collegamento ipertestuale che punta, ad esempio, un altro file PDF) utilizzando il Tipo di azione
Launch
anzichéURI
(entrambi i tipi specificati a pagina 653 di Adobe Portable Document Format, PDF Reference, versione 1.7, sesta edizione - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )? O è l'unica soluzione per implementare un post-processore in grado di modificare tutti iURI
collegamenti ipertestuali di file codificati "errati" nel loroLaunch
equivalente?
Versione elaborata:
Ho due documenti Word; doc1.docx
e doc2.docx
(entrambi compilati con MS Word 2007).
Nel doc1.docx
posto un collegamento ipertestuale a una versione PDF del mio secondo documento ( doc2.pdf
) - così ora ho ottenuto:
Quindi salvo il doc1.docx
file come entrambi .docx
e .pdf
- la PDF
generazione è gestita dall'editore PDF incorporato in MS Word 2007 utilizzando le seguenti opzioni:
Fin qui tutto bene - ho quindi la seguente struttura di cartelle:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
Quindi apro doc1.pdf
con Adobe Reader X (versione 10.1.3) e faccio clic sul collegamento ipertestuale che punta a doc2.pdf
. Dato che il collegamento è relativo, avrei immaginato / supposto che Adobe Reader X avrebbe semplicemente aperto il file PDF di destinazione in una finestra separata o nella stessa istanza di Adobe Reader X (a seconda dell'opzione Open cross-document links in same window
specificata in:) Edit -> Preferences -> Documents
.
Tuttavia, non è così. Invece, Adobe Reader X risolve il collegamento ipertestuale utilizzando il browser predefinito (nel mio caso Google Chrome v21 + su Windows 7 x64) - e per essere chiari - questo è il problema . Voglio che Adobe Reader X (e la maggior parte dei suoi predecessori) risolva semplicemente il collegamento ipertestuale aprendo il PDF di destinazione in un'altra istanza di Adobe Reader X (supponendo di aver deselezionato l' Open cross-document links in same window
opzione). Ripetendo lo stesso scenario usando il mio (predefinito) lettore PDF; Sumatra PDF funziona come previsto: Sumatra PDF apre il file PDF di destinazione in una finestra separata e mi mostra il contenuto didoc2.pdf
. Quindi perché non usare Sumatra PDF, allora chiedi? Mi sarebbe piaciuto, tuttavia, il problema è che sto lavorando a un progetto con potenzialmente molti utenti finali e non posso presumere che tutti utilizzino un lettore PDF diverso da Adobe Reader X, quindi non c'è altro modo per aggirare che capire cosa sta succedendo con Adobe Reader X.
Quindi, per arrivarci, ho iniziato a scavare.
Innanzitutto, osservando la barra degli indirizzi in Chrome, si vede che Adobe Reader X tenta di risolvere doc2.pdf
usando lo file
schema URI: file:///C:/superuser/doc2.pdf
- il che mi sembra corretto (incollare lo stesso URI nella Run
finestra di dialogo in Windows 7 provoca il mio lettore PDF predefinito (Sumatra PDF ) per aprire il file) - ma perché Adobe Reader X chiede al browser predefinito di gestire il PDF?
Per rispondere a ciò, ho continuato a scavare. L'apertura doc1.pdf
in notepad ++ ha rivelato che il collegamento ipertestuale è stato codificato utilizzando il URI
Tipo di azione (vedere p. 653 e 662 in Adobe Portable Document Format, PDF Reference, versione 1.7, sesta edizione - http://wwwimages.adobe.com/www.adobe .com / content / dam / Adobe / it / devnet / pdf / pdfs / pdf_reference_1-7.pdf ):
/Type/Action/S/URI/URI(doc2.pdf)
Il riferimento PDF (p. 662) indica quanto segue sul URI
Tipo di azione:
Un identificatore di risorsa uniforme (URI) è una stringa che identifica (risolve in) una risorsa su Internet, in genere un file che è la destinazione di un collegamento ipertestuale, sebbene possa anche essere risolto in una query o altra entità.
Quindi, quello che in prima persona sembrava un grosso bug in Adobe Reader X ha iniziato a sembrare una corretta implementazione. Almeno, a questo punto ho capito perché Adobe Reader X si comporta in modo simile - risultando in una nuova domanda a cui rispondere: come posso codificare correttamente un collegamento ipertestuale di file (ad esempio un collegamento a doc2.pdf
) in modo tale che il PDF risultante stia creando Adobe Reader X gestire il collegamento stesso (invece di chiedere al browser predefinito di fare il suo lavoro)?
Per rispondere ho dato un'altra occhiata alla specifica PDF e ho trovato il Tipo di azione Launch
- riguardo a quel tipo, il riferimento PDF indica quanto segue (p. 659):
Un'azione di avvio avvia un'applicazione o apre o stampa un documento.
Quindi apportando la seguente modifica (usando notepad ++):
Sostituzione:
/Type/Action/S/URI/URI(doc2.pdf)
Con questo:
/Type/Action/S/Launch/F(doc2.pdf)
... Adobe Reader X risolve quindi il collegamento aprendo il doc2.pdf
file in una finestra separata / un'altra istanza di Adobe Reader X - sempre supponendo di aver deselezionato l' Open cross-document links in same window
opzione (evviva !!).
E ora fino alla domanda effettiva / finale che non sono ancora riuscito a risolvere - c'è un modo in cui posso fare in modo che MS Word 2007 (o più recente) codifichi i collegamenti ipertestuali relativi ai file (un collegamento ipertestuale che punta, ad esempio, a un altro file PDF) usando il Tipo di azione Launch
anziché URI
(entrambi i tipi specificati a pagina 653 di Adobe Portable Document Format, PDF Reference, versione 1.7, sesta edizione - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en /devnet/pdf/pdfs/pdf_reference_1-7.pdf )? O è l'unica soluzione per implementare un qualche tipo di applicazione post-processore che può cambiare tutti i URI
collegamenti ipertestuali di file codificati "errati" nel loro Launch
equivalente?
So che questo potrebbe causare molto "TLDR" - ma se riesci ad arrivare qui apprezzo molto il tuo interesse e spero che tu o qualcun altro possa indicarmi la giusta direzione.
Grazie.