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

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 in und aus einer Textdatei für die Stapelverarbeitung 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 hoffte auf kostenlose Softwarelösungen für Ubuntu 10.10 und für Windows 7.

 28
pdf
Author: ᄂ ᄀ, 2011-04-28

8 answers

Es gibt eine Vielzahl von Tools, mit denen Lesezeichen aus einer PDF-Datei in eine Nur-Text-Datei extrahiert werden 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.

Ein weiterer sehr schöner Weg ist es, einem PDF über pdflatexLesezeichen hinzuzufügen.

 26
Author: Michael Goerz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-06 13:22:32

Sie können dafür pdftk verwenden. Weitere Informationen: So exportieren und importieren Sie 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

pdftk lesezeichen-Format ist ein wenig mühsam zu schreiben. Stattdessen habe ich mein eigenes Skript erstellt mit bash, sed, pdftk und python3. Schauen Sie es sich in diesem Repo an: https://github.com/SiddharthPant/booky

So kann ich jetzt einen Text erstellen Datei(bkmrks.txt), wie diese, die dauert nur 5 Minuten schreiben, auch für einen 1000-Seiten-pdf.

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

Und dann benutze mein Skript

./booky.sh pdf_file.pdf bkmrks.txt

Dadurch wird automatisch eine PDF-Datei(pdf_file_new.pdf) mit meinen Lesezeichen erstellt.

Dies wird in *nix-Systemen funktionieren, wenn Sie sich stattdessen auf einem Windows-Computer befinden. Installieren Sie dann zuerst python3 und pdftk Verwenden Sie einfach die Datei booky.py im Repo, um bkmrks.txt in ein pdftk kompatibles Format zu konvertieren

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

Und verwenden Sie dann den Exportbefehl, um ein dump-Datendatei. Entfernen Sie die vorherigen Lesezeichen aus dieser Datei und fügen Sie stattdessen den Inhalt von output.txt mit einem einfachen Copy Paste ein. Und dann importieren Sie diese Daten zurück.

 19
Author: Siddharth Pant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-06 12:11:41

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) viel einfacher. Öffnen Sie das PDF mit den Lesezeichen (das Quell-PDF), wählen Sie alle Lesezeichen im Lesezeichenbereich aus, kopieren Sie sie mit Strg+C, öffnen Sie das PDF ohne Lesezeichen (das Ziel-PDF) und fügen Sie sie ein (Strg+V) im Lesezeichenbereich dieses PDF. PDF-Xchange Viewer behält Lesezeichen Eigenschaften, wie sie von der Quelle PDF waren (einschließlich jeder fett / kursiv formatiert auf dem Lesezeichen Text). Wenn aus irgendeinem Grund einige Abschnitte der Ziel-PDF-Datei aufgrund von Änderungen am Dokument niedriger oder höher sind, können Sie auf das Lesezeichen klicken, das korrigiert werden muss, scrollen Sie zu der Seite, auf der das Lesezeichen geöffnet werden soll, und klicken Sie erneut mit der rechten Maustaste auf das Lesezeichen und klicken Sie auf "Ziel festlegen". Wiederholen Sie diesen letzten Teil nach Bedarf für jedes beleidigende Lesezeichen. Speichern Sie das Ziel-PDF, wenn Sie fertig sind.

Dies funktionierte großartig für mich, war sehr intuitiv, und ich war in wenigen Minuten fertig. In meinem speziellen Szenario hatte ein Mitarbeiter ein sehr langes Dokument mit Word für Mac erstellt, das keine Lesezeichen hatte. Aufgrund der Länge des Dokuments wollte ich Lesezeichen, die dem Umriss des Dokuments entsprechen. Ich könnte Word für Windows dazu bringen, das Dokument als PDF mit Lesezeichen zu speichern, aber einige Formatierungsunterschiede zwischen Word für Windows und Word für Mac haben die Seitenanzahl ziemlich reduziert (insbesondere gab es Unterschiede im Leerraum fußzeilen und Unterschiede im Abstand zwischen den Figuren und der Beschriftung). Ich konnte mit den Kopf-und Fußzeilen und Bildgrößen herumspielen, um die Paginierung in Word für Windows korrekt zu machen, und sie dann in PDF mit Lesezeichen speichern. Leider gab es immer noch einige Unterschiede in der Formatierung, sodass ich die Lesezeichen einfach auf das ursprüngliche PDF anwenden wollte, und dann habe ich die obige Lösung herausgefunden.

 4
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-09-21 18:52:57

HandyOutline. 1 ziehen, 1 klicken, fertig. https://sourceforge.net/projects/handyoutlinerfo/. Kostenlos. Einrückungen Unter Lesezeichen. Benötigt keinen PDF-Reader / Editor. Auch bearbeiten, exportieren Sie alle Details in Text (Kopie in Word schreiben Sie ein Makro, um es in ein voll funktionsfähiges Word-Dokument aufzuräumen) oder XML, repaginieren, in PDF importieren. Dev verdient Spenden.

PDF-Xchange Editor (ersetzt PDFViewer) zufällig duplizierte / verpasste Lesezeichen in Text exportiert

JPDF benötigt Java, exportiert formatierung Müll, konnte es nicht reinigen, um die Namen nur

PDFtk hat mir Kopfschmerzen bereitet, als ich mir die Anweisungen angesehen habe

:-)

 4
Author: Piecevcake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-10-31 07:08:36

Die Spezifikation für PDF-Dateien ist als frei herunterladbare PDF von Adobe verfügbar - oder zumindest beim letzten Mal. In den meisten PDF-Dateien sind jedoch die meisten komprimierbaren Daten komprimiert. Es gab wahrscheinlich einmal eine im Grunde Klartextversion von PDF, und wenn ja, wird es jetzt noch gültig sein, aber tatsächlich eine Datei in dieser Form zu bekommen kann ein Problem sein.

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

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

Dieses Tutorial zeigt, wie Lesezeichen automatisch mit Javascript in Acrobat 7.0 Pro (der in Creative Suite CS2 enthaltenen Version) erstellt werden. Obwohl das ein bisschen alt wird, sollte die gleiche Technik für neuere Versionen gut funktionieren.

Adobe-Anwendungen enthalten eine Bibliothek zum Lesen/Schreiben von Text dateien mit Javascript (etwas, das Javascript nicht als Standard hat), so ist es möglich, Ihre eigenen Import/Export-Skripte zu schreiben, wenn auch nicht trivial, um diese Skripte robust zu machen.

 1
Author: Steve314,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-28 06:46:17

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 bitte dann in OneNote, einen Schnappschuss zu machen und die Foxit-Lesezeichenstruktur auszuwählen.

Zurück zu OneNote wähle ich die Option "Text aus Bild kopieren" (im Menü, das nach einem Rechtsklick auf das Snapshot-Bild angezeigt wird) und füge es auf die Seite ein, um den Einzug zu korrigieren (normalerweise mit Kugeln).

 1
Author: C.Delgado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-06 11:26:08

Ich habe eine andere ziemlich "dumme" Lösung gefunden, um alle Lesezeichen in einer PDF-Datei als Text für die Verwendung an anderer Stelle zu kopieren. In Acrobat Pro (für Mac OS) gibt es keine Möglichkeit, alle Lesezeichen auszuwählen und in einem Textverarbeitungsprogramm zu kopieren/einzufügen. Sie können jedoch die gesamte PDF-Datei als HTML-Datei mit der Option "eine einzelne HTML-Seite + Navigationframe basierend auf Lesezeichen hinzufügen" exportieren. Öffnen Sie dann den HTML-Code in einem Browser, wählen Sie den gesamten Text im Navigationframe aus und kopieren/fügen Sie ihn in einen Textprozessor ein...

 0
Author: Johan Morris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-27 22:09:50

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

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 ersetzt (in der Reihenfolge), und dann hatte ich eine Liste von Lesezeichen (vergessen Sie nicht, die Verwendung von Regex in Ihrem Texteditor zu ersetzen):

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

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

BookmarkTitle: A8.\d.\d+\s
 0
Author: The Quantum Physicist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-28 06:44:47