Wie importiere, exportiere und bearbeite ich Lesezeichen einer PDF-Datei?


21

Ich habe gehört, dass Lesezeichen einer PDF-Datei irgendwo in der Datei im Klartext gespeichert sind. Ich habe mich gefragt, ob es möglich ist, Lesezeichen einer PDF-Datei für die Stapelverarbeitung in eine und aus einer Textdatei zu importieren und zu exportieren.

Wenn ja, gibt es eine Beschreibung der Syntax zum Bearbeiten der Textdatei, die Lesezeichen einer PDF-Datei enthält?

Ich hatte auf kostenlose Softwarelösungen für Ubuntu 10.10 und Windows 7 gehofft.

Danke und Grüße!

Antworten:


21

Es gibt eine ganze Reihe von Tools, mit denen Sie Lesezeichen aus einem PDF-Dokument in eine reine Textdatei extrahieren können und umgekehrt. Einige davon sind wie folgt:

Außerdem habe ich ein Skript, das zwischen den Formaten vieler dieser Tools konvertieren kann: bmconverter.py .

Eine weitere sehr schöne Möglichkeit ist das Hinzufügen von Lesezeichen zu einem PDF über pdflatex .


12

Sie können dafür verwenden pdftk. Weitere Informationen: Exportieren und Importieren von PDF-Lesezeichen .

Exportieren Sie PDF-Lesezeichen in der Befehlszeile wie folgt:

pdftk C:\Users\Sid\Desktop\doc.pdf dump_data output C:\Users\Sid\Desktop\doc_data.txt

Importieren Sie PDF-Lesezeichen aus einer Datendatei wie folgt:

pdftk C:\Users\Sid\Desktop\doc.pdf update_info C:\Users\Sid\Desktop\doc_data.txt output C:\Users\Sid\Desktop\updated.pdf

pdftkDas Lesezeichenformat ist etwas mühsam zu schreiben. Stattdessen habe ich mein eigenes Skript mit bash, sed, pdftkund python3. Schau es dir in diesem Repo an: https://github.com/SiddharthPant/booky

Jetzt kann ich eine solche Textdatei ( bkmrks.txt) erstellen , die selbst für ein 1000-Seiten-PDF-Dokument nur 5 Minuten benötigt.

{
  Title1, 1
  Title2, 2
  {
    Subtitle1, 3
    Subtitle2, 4
    {
      SubSubtitle1, 5
      ...
    }
  }
}

und dann mein Skript verwenden

./booky.sh pdf_file.pdf bkmrks.txt

Dadurch wird automatisch ein pdf ( pdf_file_new.pdf) mit meinen Lesezeichen erstellt.

Dies funktioniert auf * nix-Systemen, wenn Sie sich stattdessen auf einem Windows-Computer befinden. Dann zuerst installieren python3und pdftknur die booky.pyDatei im Repo verwenden, um bkmrks.txtin ein pdftkkompatibles Format zu konvertieren

python3 booky.py < bkmrks.txt > output.txt

Verwenden Sie anschließend den Befehl export, um eine Datei mit den gespeicherten Daten zu generieren. Entfernen Sie die vorherigen Lesezeichen aus dieser Datei und fügen Sie output.txtstattdessen den Inhalt mithilfe eines einfachen Kopiervorgangs ein. Und dann importieren Sie diese Daten zurück.


4

Wenn Sie eine Version eines Dokuments mit Lesezeichen haben und diese kopieren möchten, ist die Verwendung von PDF-XChange Viewer (ich habe v2.5.211 verwendet) eine viel einfachere Möglichkeit. Öffnen Sie die PDF-Datei mit den Lesezeichen (die Quell-PDF), wählen Sie alle Lesezeichen im Lesezeichenbereich aus, kopieren Sie sie mit Strg + C, öffnen Sie die PDF-Datei ohne die Lesezeichen (die Ziel-PDF) und fügen Sie sie ein (Strg) + V) im Lesezeichenbereich der PDF-Datei. PDF-Xchange Viewer behält die Lesezeicheneigenschaften wie in der Quell-PDF-Datei bei (einschließlich der fett / kursiven Formatierung des Lesezeichentexts). Wenn aus irgendeinem Grund einige Abschnitte der Ziel-PDF aufgrund von Änderungen am Dokument niedriger oder höher sind, können Sie auf das zu korrigierende Lesezeichen klicken und zu der Stelle auf der Seite blättern, an der das Lesezeichen geöffnet werden soll. Klicken Sie erneut auf das Lesezeichen und klicken Sie auf "Ziel festlegen". Wiederholen Sie diesen letzten Teil nach Bedarf für alle anstößigen Lesezeichen. Speichern Sie das Ziel-PDF, wenn Sie fertig sind.

Das hat bei mir sehr gut funktioniert, war sehr intuitiv und in wenigen Minuten erledigt. In meinem speziellen Szenario hatte ein Mitarbeiter mit Word für Mac ein sehr langes Dokument erstellt, das keine Lesezeichen enthielt. Aufgrund der Länge des Dokuments wollte ich Lesezeichen, die der Gliederung des Dokuments entsprechen. Ich könnte Word für Windows veranlassen, das Dokument als PDF mit Lesezeichen zu speichern, aber einige Formatierungsunterschiede zwischen Word für Windows und Word für Mac haben die Seitenzahl erheblich verringert (insbesondere gab es Unterschiede im Leerraum um Fußzeilen und Unterschiede) im Abstand zwischen den Figuren und der Überschrift). Ich konnte mit den Kopf- und Fußzeilen sowie den Abbildungsgrößen herumspielen, um die korrekte Paginierung in Word für Windows zu erhalten, und dann in PDF mit Lesezeichen speichern. Unglücklicherweise,


1
+1 für PDF-Xchange. Je weniger Werkzeuge desto besser
Ooker

1

Die Spezifikation für PDF-Dateien ist als frei herunterladbares PDF von Adobe erhältlich - oder zumindest das letzte Mal, als ich es überprüft habe. In den meisten PDF-Dateien sind jedoch die meisten komprimierbaren Daten komprimiert. Es gab wahrscheinlich einmal eine im Grunde genommen reine Textversion von PDF, und wenn ja, wird sie jetzt noch gültig sein, aber tatsächlich kann es ein Problem sein, eine Datei in dieser Form zu erhalten.

Obwohl ich es nicht getan habe, besteht eine sehr wahrscheinliche Möglichkeit (wenn Sie bereit sind zu zahlen) darin, Acrobat Pro zu kaufen und die in dieser Anwendung integrierten Javascript-Skriptfähigkeiten zu verwenden. Um Ihnen den Einstieg zu erleichtern ...

http://acrobatusers.com/tutorials/2008/10/auto_bookmark_creation

In diesem Tutorial wird gezeigt, wie Sie Lesezeichen in Acrobat 7.0 Pro (der in Creative Suite CS2 enthaltenen Version) automatisch mit Javascript erstellen. Obwohl dies etwas in die Jahre gekommen ist, sollte die gleiche Technik für neuere Versionen gut funktionieren.

Adobe-Anwendungen enthalten eine Bibliothek zum Lesen / Schreiben von Textdateien mit JavaScript (etwas, das JavaScript nicht standardmäßig verwendet). Daher können Sie Ihre eigenen Import- / Exportskripten schreiben, obwohl dies nicht trivial ist, um diese Skripten robust zu machen.


Vielen Dank! Gibt es eine Linux-Version von Acrobat Pro?
Tim

Entschuldigung - das bezweifle ich sehr. AFAIK ist eine Mac- oder Windows-Sache, und es ist unwahrscheinlich, dass Adobe Linux unterstützt, es sei denn, eine große Anzahl von Kreativprofis (1) beginnen, diese Plattform zu nutzen, und (2) zeigen, dass sie bereit sind, für proprietäre Software viel zu zahlen, anstatt FOSS zu verwenden Alternativen. Scheint unwahrscheinlich. Für eine kostenlose Lösung können Sie eine Bibliothek wie blog.rubypdf.com/2007/12/12/… (für Ruby) ausprobieren . Ich weiß noch weniger darüber - ich habe es gerade bei Google gefunden.
Steve314

1

Um Lesezeichen zu exportieren, verfolge ich einen anderen Ansatz, der die Verwendung von Microsoft OneNote erfordert:

Ich öffne den PDF-Reader (ich verwende die kostenlose Version von Foxit) mit der sichtbaren Lesezeichenstruktur und frage dann in OneNote nach einem Schnappschuss und wähle die Foxit-Lesezeichenstruktur aus.

Zurück zu OneNote wähle ich die Option "Text aus Bild kopieren" (in dem Menü, das nach dem Klicken mit der rechten Maustaste auf das Schnappschussbild angezeigt wird) und füge es an der Seite ein, um den Einzug zu korrigieren (normalerweise mit Aufzählungszeichen).


1

HandyOutline. 1 ziehen, 1 klicken, fertig. https://sourceforge.net/projects/handyoutlinerfo/ . Frei. Rückt Unterlesezeichen ein Benötigt keinen PDF-Reader / Editor. Bearbeiten, Exportieren aller Details in Text (Kopieren in Word Schreiben Sie ein Makro, um es in ein voll funktionsfähiges Word-Dokument umzuwandeln) oder XML, wiederholen Sie den Import in PDF. Dev verdient Spenden.

Der PDF-Xchange Editor (ersetzt PDFViewer) dupliziert die Lesezeichen nach dem Zufallsprinzip und exportiert sie in einen Text

JPDF benötigte Java, exportierte Formatierungsmüll, konnte es nicht bereinigen, um nur die Namen zu erhalten

PDFtk bereitete mir Kopfschmerzen, als ich mir nur die Anweisungen ansah

:-)


Ich liebe es, dass dieses Format in XML exportiert wird, anstatt in einem eigenwilligeren Format. Auch die Drag & Drop-Oberfläche für den Export könnte nicht einfacher sein. Ich wünschte nur, es könnte mehrere auf einmal tun.
Evan Donovan

0

Ich habe eine andere, eher "dumme" Lösung gefunden, um alle Lesezeichen in einem PDF als Text für eine andere Verwendung zu kopieren. In Acrobat Pro (für Mac OS) gibt es keine Möglichkeit, alle Lesezeichen auszuwählen und sie in eine Textverarbeitung zu kopieren bzw. einzufügen. Sie können jedoch das gesamte PDF als HTML-Datei mit der Option "Eine einzige HTML-Seite + Navigationsrahmen basierend auf Lesezeichen hinzufügen" exportieren. Öffnen Sie dann den HTML-Code in einem Browser, markieren Sie den gesamten Text im Navigationsrahmen und kopieren Sie ihn in eine Textverarbeitung.


0

Um alle Lesezeichen aus einer PDF-Datei in eine Textdatei zu lesen, können Sie diesen Befehl verwenden mit pdftk:

pdftk input.pdf dump_data output output.txt

Ich habe dann Regex auf Notepad ++ verwendet, um die zusätzlichen Teile zu entfernen. Folgendes habe ich durch eine leere Zeichenfolge (in der angegebenen Reihenfolge) ersetzt und dann eine Liste mit Lesezeichen erstellt (vergessen Sie nicht, das Ersetzen mit Regex in Ihrem Texteditor vorzunehmen):

BookmarkLevel.*
BookmarkPageNumber.*
BookmarkBegin.*
\n\s+\n

Wenn Sie die Zahlen entfernen möchten, ersetzen Sie diesen Ausdruck:

BookmarkTitle: A8.\d.\d+\s
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.