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.
quelle
Antworten:
Vielen Dank für Ihren ausgezeichneten Artikel. Es klappt! Zuerst nichts für mich, aber dann habe ich festgestellt, dass Sie den 'geschützten Modus' in Adobe X deaktivieren müssen. Ich habe dieses Problem in Adobe 9 überhaupt nicht. Es scheint mir, dass die Branche in Bezug auf die Funktionalität in Adobe X rückwärts geht Name der Sicherheit.
Gehen Sie in Adobe Reader X wie folgt vor:
/Type/Action/S/URI/URI
mit/Type/Action/S/Launch/F(
einem geeigneten Hex-EditorEs gibt keine einfache Lösung für das, was wir tun möchten, nämlich jedem Benutzer mit nur einem PDF-Reader ohne Einstellungen zu erlauben, sich um einen Ordner zu kümmern.
Aber nochmals vielen Dank für all Ihre Arbeit und das Licht, das sie auf das Thema wirft.
quelle
FWIW, ich glaube nicht, dass die Links in Sumatra funktionieren, wenn der Dateiname Leerzeichen enthält (das Platzieren von Anführungszeichen um den Namen hat nicht geholfen, da Word diese beim Erstellen des Links zu entfernen scheint). Ich glaube nicht, dass es möglich ist, das Verhalten von Word zu ändern, also ...
Problemumgehung Nr. 1: Verwenden Sie einen besseren PDF-Ersteller.
Problemumgehung Nr. 2: Erstellen Sie PDFs wie gewohnt mit Word, und verwenden Sie dann einen Hex-Editor oder ein Befehlszeilenprogramm wie http://stahlforce.com/dev/index.php?tool=rep , um alle erforderlichen Instanzen von / Type / zu ersetzen. Aktion / S / URI / URI ( mit / Typ / Aktion / S / Start / F ( .
quelle
Re. die relative Hyperlink-Frage.
In der MS Office-Hilfe wird angegeben, dass die Einstellung "Links beim Speichern aktualisieren" (Schaltfläche "Office" / Schaltfläche "Word-Optionen" / Schaltfläche "Erweitert" / "Web otions") dazu führt, dass Hyperlinks relativ eingefügt werden. Wenn diese Option nicht aktiviert ist, werden sie absolut. Diese Einstellung machte jedoch keinen Unterschied zu meinen Versuchen. Was geschah, war der Punkt, an dem die Datei gespeichert wurde. Um relative Links zu erstellen, öffne ich eine neue leere Datei und speichere sie in einem geeigneten Ordner, bevor ich Links einfüge. Wählen Sie im Feld "Hyperlink einfügen" die Option "Vorhandener Ordner". Der in der Box angezeigte Ordner ist dann der Ordner, der gerade in einem Baum gespeichert wurde, der nach unten und nicht nach oben gespeichert ist. dh relativ
Um absolute Links zu erstellen, öffne ich eine neue leere Datei und füge den Link ein, ohne sie zu speichern. Das Einfügefeld zeigt jetzt den vorhandenen Ordner auf der obersten Ebene. Führen Sie einen Drilldown zu der zu verknüpfenden Datei durch, und der am unteren Rand des Felds angezeigte Pfad ist der vollständige Pfad zurück zu C:. . . . . .. (zeigt den Laufwerksbuchstaben) dh absolut.
Wenn Sie den Mauszeiger über die Links in den beiden Word-Dateien bewegen, wird in beiden Fällen der vollständige absolute Pfad angezeigt. Wenn der übergeordnete Ordner jedoch auf ein anderes Laufwerk kopiert wird, öffnet der relative Link den Ordner im neuen Laufwerk und der absolute Link geht zurück zum Ordner C: Laufwerk, den ich sehen möchte. Ich habe noch nicht herausgefunden, wie beide Arten von Links in einer Datei erstellt werden können. Aber das brauche ich sowieso nicht. Ich konnte meine beiden MS Word-Dateien mithilfe Ihrer obigen Hex-Edit-Modifikation in PDF konvertieren, und beide funktionierten, einer im absoluten Modus, der andere relativ.
Re. Ihre 'Hex-Edit-Subsitutionsmethode'
In einigen Fällen hat es gut funktioniert und in anderen nicht. Ich stellte fest, dass ich sicherstellen musste, dass die Zieldateinamen keine Leerzeichen enthalten. Ich habe sie durch das Unterstrichsymbol ersetzt. Dann haben sie gearbeitet.
quelle
Ich habe dies jetzt so weit wie möglich für mich selbst herausgefunden. Da es sich direkt um die ursprüngliche Frage handelt, werde ich nur meine endgültige Zusammenfassung weitergeben.
Re. absolute und relative Links im selben Dokument
Sehen Sie sich den Pfad unten im Feld Hyperlink einfügen an. Wenn der Ordner der obersten Ebene der von Ihnen ausgewählte Ordner ist, ist der Link relativ dazu. Um dies absolut zu machen, verwenden Sie die Baumstruktur im Feld "Einfügen", um bis zum Laufwerksbuchstaben nach oben zu bohren. Die Standardeinstellung gilt für relative Links, wenn die Datei zum ersten Mal im übergeordneten Ordner gespeichert wurde.
Schritte zum Erstellen eines transportablen Indexverknüpfungsordners
(mit einem 'Index'-Dokument, das mit Dateien in Unterordnern verknüpft ist.)
Erstellen Sie irgendwo einen neuen Ordner, der der zu transportierende Ordner sein soll (Ordner 'The Parent').
Erstellen oder platzieren Sie Unterordner mit ihren Dateien im übergeordneten Ordner.
Öffnen Sie nun ein Word 2007-Dokument, das Ihr 'Indexdokument' sein wird. Speichern Sie diese Datei vor dem Einfügen von Links bei Ihrem 'Elternteil'.
Führen Sie nun den Hyperlink ein. Das Feld 'Hyperlink einfügen' zeigt die Ordner- / Dateibaumstruktur abwärts vom 'übergeordneten', dh Verwandten. Um eine absolute Verbindung herzustellen, bohren Sie bis zum Laufwerksbuchstaben nach oben.
Speichern Sie die Word-Datei, die jetzt als Indexdokument fungiert.
Um das 'Indexdokument' in PDF zu konvertieren, öffnen Sie die Word-Datei und speichern Sie sie als PDF. Diese Version des Indexdokuments öffnet Zieldateien über den Browser, indem sie entweder heruntergeladen oder als PDF im Browser angezeigt werden.
Um das Dokument 'Index.pdf' zu öffnen, ändern Sie die Links in ihrer nativen Anwendung. Ändern Sie die Datei mithilfe der zuvor beschriebenen Hex-Bearbeitungsmethode und ersetzen Sie / Type / Action / S / URI / URI (für / Type / Action / S / Launch / F. (
3.Wichtiger Hinweis! Stellen Sie vor dem Ändern der PDF-Datei sicher, dass alle Ordner- und Dateinamen keine Leerzeichen enthalten. Leerzeichen mit Unterstrich oder Bindestrich ersetzen.
quelle