Pdf
向 PDF 文件添加和編輯書籤
通過從一些帶有書籤的 pdf 文件中獲取元數據
pdftk
,我觀察了 pdf 元數據中書籤的格式。所以我猜測,pdftk
可以添加和編輯 pdf 文件的書籤。以下是我遵循的三個步驟:
- 我首先將 pdf 文件中的元數據(包括書籤,如果有的話)通過
pdftk in.pdf dump_data > in.info
.- 接下來,我將一些書籤添加到元數據文本文件
in.info
中,將其從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 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
到
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
- 然後我嘗試將編輯後的元數據放回 pdf 文件中
pdftk in.pdf update_info in.info output out.pdf
。但是當我
out.pdf
在 evince 或 adobe reader 中打開新的 pdf 文件時,新的 pdf 文件中沒有書籤。如果我從新的 pdf 文件中獲取元數據
out.pdf
,pdftk out.pdf dump_data > out.info
則out.info
. 好像沒有成功添加書籤。我想知道是否有一些錯誤?我應該如何添加和編輯 pdf 文件的書籤,不一定是 pdftk?
在我看來,從 1.45 版(2012-12-06)開始,pdftk 確實允許通過 update_info 命令修改書籤:
您現在可以使用 update_info 添加或更改 PDF 的書籤。
通過: http ://www.pdflabs.com/docs/pdftk-version-history/
這意味著您現在可以通過執行您最初嘗試的相同命令來更新書籤:
pdftk in.pdf update_info in.bookmarks output out.pdf
pdftk
書籤格式寫起來有點乏味。相反,我使用bash
、和. 在這個 repo 中查看:https ://github.com/SiddharthPant/bookysed``pdftk``python3
所以現在我可以創建一個
bkmrks.txt
像這樣的文本文件(),即使是 1000 頁的 pdf,也只需要 5 分鐘的時間。{ Title1, 1 Title2, 2 { Subtitle1, 3 Subtitle2, 4 { SubSubtitle1, 5 ... } } }
然後使用我的腳本
./booky.sh pdf_file.pdf bkmrks.txt
這會自動創建一個
pdf_file_new.pdf
包含我的書籤的 pdf()。