Indem ich Metadaten aus einigen PDF-Dateien mit Lesezeichen von abrufe pdftk
, beobachte ich das Format von Lesezeichen in PDF-Metadaten. Ich vermute also pdftk
, dass es mit möglich ist, Lesezeichen einer PDF-Datei hinzuzufügen und zu bearbeiten.
Hier sind drei Schritte, denen ich folge:
- Ich bekomme zuerst die Metadaten (einschließlich Lesezeichen, falls vorhanden) von einer PDF-Datei in eine Textdatei von
pdftk in.pdf dump_data > in.info
. Als nächstes füge ich einige Lesezeichen in die Metadatentextdatei ein
in.info
und ändere sie vonInfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
zu
InfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 BookmarkBegin BookmarkTitle: Front cover BookmarkLevel: 1 BookmarkPageNumber: 1 BookmarkBegin BookmarkTitle: About the Author BookmarkLevel: 1 BookmarkPageNumber: 5 BookmarkBegin BookmarkTitle: Title page BookmarkLevel: 1 BookmarkPageNumber: 6 BookmarkBegin BookmarkTitle: Copyright page BookmarkLevel: 1 BookmarkPageNumber: 7 BookmarkBegin BookmarkTitle: Foreword BookmarkLevel: 1 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
- Dann versuche ich, die bearbeiteten Metadaten wieder in die PDF-Datei von zu setzen
pdftk in.pdf update_info in.info output out.pdf
.
Wenn ich die neue PDF-Datei out.pdf
in Evince oder Adobe Reader öffne, enthält die neue PDF-Datei kein Lesezeichen.
Wenn ich die Metadaten aus der neuen PDF-Datei out.pdf
von bekomme pdftk out.pdf dump_data > out.info
, gibt es keine Lesezeichen in out.info
. Es sieht so aus, als ob die Lesezeichen nicht erfolgreich hinzugefügt wurden.
Ich habe mich gefragt, ob es Fehler gibt. Wie kann ich Lesezeichen einer PDF-Datei hinzufügen und bearbeiten, nicht unbedingt von pdftk?
Antworten:
Es sieht für mich so aus, als ob pdftk ab Version 1.45 (06.12.2012) das Ändern von Lesezeichen über den Befehl update_info zulässt:
via: http://www.pdflabs.com/docs/pdftk-version-history/
quelle
BookmarkBegin
Tags hinzufügen, bevor jeder Lesezeicheneintrag fehlt.jPDFtweak (Java, läuft also unter Unix / Linux) kann Lesezeichen ändern, aber ich weiß nicht, ob Sie irgendetwas damit schreiben können.
Für die Skripterstellung würde ich vermuten, dass Ihre einzige native Unix / Linux-Option pdflatex mit dem pdfpages-Paket ist. Aber das ist eine Lernkurve, wenn Sie noch kein LaTeX-Benutzer sind.
EDIT: Eigentlich ist es mit Ghostscript möglich: Siehe hier oder hier oder hier
quelle
Wenn Sie sich immer noch an diese Unix-Skripte halten, dann
pdftk
gs
wird akzeptiert.gs
Skript, um sie mit pdfmarks zusammenzuführenSchauen Sie sich das Skript unter http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ an
pdf-merge.py
macht genau das, was Sie (oder ich) wollen.pdf-merge.py --output=merged.pdf input1.pdf input2.pdf
In seinem Skript könnten einige kleinere Verbesserungen vorgenommen werden
Auf jeden Fall sollte es funktionieren
quelle
pdftk ist definitiv das richtige Tool (mit der richtigen Syntax):
quelle
Caleb,
Soweit ich weiß, können Lesezeichen gemäß der PDF-Spezifikation nicht über ein Diagnosetool wie das eingespritzt werden
pdftk
. Das Aktualisieren der Metadaten, um auf nicht vorhandene Kapitel und Lesezeichenanker zu verweisen, wird definitiv nicht funktionieren, es kann sogar dazu führen, dass Ihre PDF-Datei inkonsistent oder ungeöffnet ist.Ich habe letztendlich Java + iText-Bibliotheken verwendet, um das zu tun, was Sie in diesem Tutorial vorgeschlagen haben , aber wir haben täglich mit Hunderten von PDFs zu tun , daher musste es automatisiert werden. Wenn Sie eine einmalige Aktion ausführen, sollte dies in Adobe Acrobat möglich sein.
quelle
Um all diese guten Antworten zusammenzufassen:
Es gibt ein bmconverter-Projekt auf GitHub, das verschiedene PDF-Lesezeichenformate konvertieren kann. Es kann die pdftk-Ausgabe in das jpdftweak-Format konvertieren. Wenn Sie jedoch jpdftweak verwenden, müssen Sie die pdftk-Ausgabe nicht in csv konvertieren, da Sie alle Arbeiten in jpdftweak ausführen können.
Leider wird pdfmarks vom Projekt nicht unterstützt, aber zum Glück hat jemand ein Skript in bmconverter-Ausgaben gepostet , das die pdftk-Ausgabe in pdfmarks konvertieren kann. Ghostscript-Batch-Option ist also eine Option
quelle
pdftk
Das Lesezeichenformat ist etwas mühsam zu schreiben. Stattdessen habe ich mein eigenes Skript mitbash
,sed
,pdftk
undpython3
. Schau es dir in diesem Repo an: https://github.com/SiddharthPant/bookyJetzt kann ich eine solche Textdatei (
bkmrks.txt
) erstellen , die selbst für ein 1000-Seiten-PDF-Dokument nur 5 Minuten benötigt.und dann mein Skript verwenden
Dadurch wird automatisch ein pdf (
pdf_file_new.pdf
) mit meinen Lesezeichen erstellt.quelle
Fügen Sie einfach
BookmarkBegin
vor jedem Lesezeicheneintrag wie inquelle
Die in Schritt 1 verwendete Umleitung führt dazu, dass update_info nicht richtig funktioniert. Sie müssen stattdessen die Ausgabedatei für pdftk angeben:
Siehe diese Antwort von einer ähnlichen Frage: /programming//a/30308964/3158933
Dateien, die ich mit einer Umleitung erstellt habe, haben eine etwas größere Dateigröße und führen dazu, dass pdftk beim Ausführen des Befehls update_info die Meldung "Warnung: Unerwarteter Fall 1 in LoadDataFile (); Fortsetzen" ausgibt.
quelle