Kurzfassung:
- Gibt es eine Möglichkeit, MS Word 2007 (oder eine neuere Version) dazu zu bringen, relative Datei-Hyperlinks (einen Hyperlink, der beispielsweise auf eine andere PDF-Datei verweist) mit dem Aktionstyp
Launch
anstelle vonURI
(beide auf Seite 653 des Adobe Portable Document Format angegebenen Typen ) zu codieren ? PDF-Referenz, Version 1.7, sechste Ausgabe - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Oder ist die einzige Lösung, um einen Postprozessor zu implementieren, der alle "falschen"URI
codierten Datei-Hyperlinks in ihreLaunch
Entsprechung ändern kann ?
Ausgearbeitete Version:
Ich habe zwei Word-Dokumente. doc1.docx
und doc2.docx
(beide mit MS Word 2007 kompiliert).
In doc1.docx
ich einen Hyperlink zu einer PDF - Version meines zweiten Dokuments (Platz doc2.pdf
) - so jetzt habe ich:
Ich speichere dann die doc1.docx
Datei als beides .docx
und .pdf
- die PDF
Generierung wird vom eingebauten PDF-Publisher in MS Word 2007 mit den folgenden Optionen durchgeführt:
So weit so gut - ich habe dann folgende Ordnerstruktur:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
Dann öffne ich doc1.pdf
mit Adobe Reader X (Version 10.1.3) und klicke auf den Hyperlink, der auf zeigt doc2.pdf
. Da der Link relativ ist, hätte ich vermutet, dass Adobe Reader X die Ziel-PDF-Datei entweder in einem separaten Fenster oder in derselben Instanz von Adobe Reader X öffnen würde (abhängig von der in :) Open cross-document links in same window
angegebenen Option Edit -> Preferences -> Documents
.
Dies ist jedoch nicht der Fall. Stattdessen löst Adobe Reader X den Hyperlink mit dem Standardbrowser (in meinem Fall Google Chrome v21 + unter Windows 7 x64) - und um klar zu sein - dies ist das Problem . Ich möchte, dass Adobe Reader X (und die meisten seiner Vorgänger) den Hyperlink einfach auflöst, indem das Ziel-PDF in einer anderen Instanz von Adobe Reader X geöffnet wird (vorausgesetzt, ich habe die Open cross-document links in same window
Option deaktiviert ). Wiederholen des gleichen Szenarios mit meinem (Standard-) PDF-Reader; Sumatra PDF funktioniert wie erwartet - Sumatra PDF öffnet die Ziel-PDF-Datei in einem separaten Fenster und zeigt mir den Inhalt vondoc2.pdf
. Warum also nicht Sumatra PDF verwenden, fragen Sie? Ich hätte es gerne getan - das Problem ist jedoch, dass ich an einem Projekt mit potenziell vielen Endbenutzern arbeite und ich kann nicht davon ausgehen, dass alle einen anderen PDF-Reader als Adobe Reader X verwenden - es gibt also keinen anderen Weg das herauszufinden, was mit Adobe Reader X los ist.
Um dorthin zu gelangen, fing ich an zu graben.
Wenn Sie sich die Adressleiste in Chrome ansehen, sehen Sie zunächst, dass Adobe Reader X versucht, doc2.pdf
mithilfe des file
URI-Schemas eine Lösung zu finden: file:///C:/superuser/doc2.pdf
- was mir fair erscheint (das Einfügen derselben URI in den Run
Dialog in Windows 7 führt zu meinem Standard-PDF-Reader (Sumatra PDF) ), um die Datei zu öffnen) - aber warum fordert Adobe Reader X den Standardbrowser auf, die PDF-Datei zu verarbeiten?
Um das zu beantworten, grub ich weiter. Das Öffnen doc1.pdf
in Notepad ++ ergab, dass der Hyperlink mit dem URI
Aktionstyp codiert wurde (siehe S. 653 und 662 im Adobe Portable Document Format, PDF-Referenz, Version 1.7, sechste Ausgabe - http://wwwimages.adobe.com/www.adobe .com / content / dam / Adobe / de / devnet / pdf / pdfs / pdf_reference_1-7.pdf ):
/Type/Action/S/URI/URI(doc2.pdf)
In der PDF-Referenz (S. 662) wird Folgendes zum URI
Aktionstyp angegeben:
Ein URI (Uniform Resource Identifier) ist eine Zeichenfolge, die eine Ressource im Internet identifiziert (in eine Auflösung auflöst) - normalerweise eine Datei, die das Ziel eines Hypertext-Links ist, obwohl sie auch in eine Abfrage oder eine andere Entität aufgelöst werden kann.
Was auf den ersten Blick wie ein großer Fehler in Adobe Reader X aussah, sah nach einer fairen Implementierung aus. Zumindest habe ich zu diesem Zeitpunkt herausgefunden, warum sich Adobe Reader X so verhält - was zu einer neuen Frage führte: Wie kann ich einen Datei-Hyperlink (z. B. einen Link zu doc2.pdf
) richtig codieren, sodass das resultierende PDF Adobe Reader X erstellt? den Link selbst behandeln (anstatt den Standardbrowser zu bitten, seine Arbeit zu erledigen)?
Um darauf zu antworten, habe ich mir die PDF-Spezifikation noch einmal angesehen und den Aktionstyp gefunden. Zu Launch
diesem Typ gibt die PDF-Referenz Folgendes an (S. 659):
Eine Startaktion startet eine Anwendung oder öffnet oder druckt ein Dokument.
Nehmen Sie also die folgende Änderung vor (mit Notepad ++):
Ersetzen:
/Type/Action/S/URI/URI(doc2.pdf)
Mit diesem:
/Type/Action/S/Launch/F(doc2.pdf)
... Adobe Reader X löst dann den Link auf, indem die doc2.pdf
Datei in einem separaten Fenster / einer anderen Instanz von Adobe Reader X Open cross-document links in same window
geöffnet wird - wiederum unter der Annahme, dass ich die Option deaktiviert habe (Hurra !!).
Und nun zu der eigentlichen / endgültigen Frage, die ich noch nicht gelöst habe: Gibt es eine Möglichkeit, MS Word 2007 (oder eine neuere Version) dazu zu bringen, relative Datei-Hyperlinks (einen Hyperlink, der beispielsweise auf eine andere PDF-Datei verweist) mithilfe der zu codieren? Aktionstyp Launch
statt URI
(beide Typen sind auf Seite 653 des Adobe Portable Document Format, PDF-Referenz, Version 1.7, sechste Ausgabe - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en angegeben /devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Oder ist die einzige Lösung, um eine Art Postprozessoranwendung zu implementieren, die alle "falschen" URI
codierten Datei-Hyperlinks in ihre Launch
Entsprechung ändern kann ?
Ich weiß, dass dies eine Menge "TLDR" verursachen könnte - aber wenn Sie es schaffen, hierher zu kommen, schätze ich Ihr Interesse sehr und hoffe, dass Sie oder jemand anderes mich in die richtige Richtung weisen können.
Vielen Dank.