Pdf

向 PDF 文件添加和編輯書籤

  • February 22, 2022

通過從一些帶有書籤的 pdf 文件中獲取元數據pdftk,我觀察了 pdf 元數據中書籤的格式。所以我猜測,pdftk可以添加和編輯 pdf 文件的書籤。

以下是我遵循的三個步驟:

  1. 我首先將 pdf 文件中的元數據(包括書籤,如果有的話)通過pdftk in.pdf dump_data > in.info.
  2. 接下來,我將一些書籤添加到元數據文本文件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
  1. 然後我嘗試將編輯後的元數據放回 pdf 文件中pdftk in.pdf update_info in.info output out.pdf

但是當我out.pdf在 evince 或 adobe reader 中打開新的 pdf 文件時,新的 pdf 文件中沒有書籤。

如果我從新的 pdf 文件中獲取元數據out.pdfpdftk out.pdf dump_data > out.infoout.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()。

引用自:https://unix.stackexchange.com/questions/17065