MS Word 2007+ - Kann es Hyperlinks mit dem PDF-Aktionstyp "Starten" anstelle von "URI" codieren, wenn eine ".docx" -Datei als PDF veröffentlicht wird?

9

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 Launchanstelle von URI(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" URIcodierten Datei-Hyperlinks in ihre LaunchEntsprechung ändern kann ?

Ausgearbeitete Version:

Ich habe zwei Word-Dokumente. doc1.docxund doc2.docx(beide mit MS Word 2007 kompiliert).

In doc1.docxich einen Hyperlink zu einer PDF - Version meines zweiten Dokuments (Platz doc2.pdf) - so jetzt habe ich:

Eigenschaften des Hyperlinks <code> doc2.pdf </ code> in <code> doc1.docx </ code>

Ich speichere dann die doc1.docxDatei als beides .docxund .pdf- die PDFGenerierung wird vom eingebauten PDF-Publisher in MS Word 2007 mit den folgenden Optionen durchgeführt:

MS Word 2007 PDF-Veröffentlichungseigenschaften

So weit so gut - ich habe dann folgende Ordnerstruktur:

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

Dann öffne ich doc1.pdfmit 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 windowangegebenen 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 windowOption 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.pdfmithilfe des fileURI-Schemas eine Lösung zu finden: file:///C:/superuser/doc2.pdf- was mir fair erscheint (das Einfügen derselben URI in den RunDialog 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.pdfin Notepad ++ ergab, dass der Hyperlink mit dem URIAktionstyp 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 URIAktionstyp 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 Launchdiesem 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.pdfDatei in einem separaten Fenster / einer anderen Instanz von Adobe Reader X Open cross-document links in same windowgeö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 Launchstatt 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" URIcodierten Datei-Hyperlinks in ihre LaunchEntsprechung ä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.

Lasse Christiansen
quelle
2
Ich bin mir nicht sicher, ob Kommentare eine Frage "stoßen", aber das ist die Lektüre wert.
Tanner Faulkner
1
Danke für deine Frage. Es selbst enthält viele Details und eine mögliche Lösung. Haben Sie es geschafft, einen besseren Weg zu finden? Das Ersetzen der Aktion funktioniert einwandfrei.
Farish
1
@Farish Leider nein. Bisher war die Verwendung eines Postprozessors die Lösung, die für mich funktioniert. Wenn ich eines Tages einen besseren Weg finde, werde ich hier ein Update veröffentlichen :)
Lasse Christiansen

Antworten:

2

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:

  1. Stellen Sie sicher, dass Open Cross Docs .. deaktiviert ist. (wie du gesagt hast)
  2. Schalten Sie den geschützten Modus aus: Bearbeiten »Einstellungen» Allgemein
  3. Suchen und ersetzen Sie /Type/Action/S/URI/URImit /Type/Action/S/Launch/F(einem geeigneten Hex-Editor

Es 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.

Bob Brown
quelle
Ich bin froh, dass es mit der Idee eines "Postprozessors" funktioniert. Da ich die Frage gestellt habe, habe ich immer noch keine bessere Lösung gefunden, daher werde ich auch den Nachbearbeitungsschritt so lange verwenden, bis eine bessere Lösung existiert. Vielen Dank für Ihre Eingabe :)
Lasse Christiansen
0

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 ( .

Karan
quelle
0

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.

Bob Brown
quelle
0

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.)

  1. Erstellen Sie irgendwo einen neuen Ordner, der der zu transportierende Ordner sein soll (Ordner 'The Parent').

  2. Erstellen oder platzieren Sie Unterordner mit ihren Dateien im übergeordneten Ordner.

  3. Ö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'.

  4. 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.

  5. Speichern Sie die Word-Datei, die jetzt als Indexdokument fungiert.

  6. 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.

  7. 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. (

  8. 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.

Bob Brown
quelle