PDFファイルへのブックマークの追加と編集

PDFファイルへのブックマークの追加と編集

ブックマークを含む一部のPDFファイルからメタデータをインポートし、pdftkPDFメタデータのブックマーク形式を観察しました。したがって、pdfを使用すると、pdftkpdfファイルのブックマークを追加して編集できるようです。

私は次の3つのステップに従います。

  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
    
  3. その後、編集したメタデータを再びpdfファイルに入れようとしますpdftk in.pdf update_info in.info output out.pdf

ただし、evinceまたはadobe readerで新しいpdfファイルを開くと、out.pdf新しいpdfファイルにブックマークがありません。

out.pdf新しいPDFファイルのメタデータを取得すると、pdftk out.pdf dump_data > out.infoそこにブックマークがないはずですout.info。ブックマークが正常に追加されていないようです。

もしバグがあるのか​​気になります。 pdftkを介さずにPDFファイルにブックマークを追加して編集するには?

答え1

バージョン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

答え2

pdftkブックマーク形式は書くのが少し退屈です。代わりに、、、およびを使用してbash独自のスクリプトを作成しました。このリポジトリで確認してください。sedpdftkpython3https://github.com/SiddharthPant/booky

これでこのようなテキストファイル(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()が自動的に生成されます。

答え3

まだUnixスクリプトの使用に固執している場合

  1. ダンプされたブックマークデータの抽出pdftk
  2. ダンプされたブックマークデータをgsGhostscriptコマンドを受け入れるpdfmarks形式に変換する追加のスクリプトを作成します。
  3. スクリプトを使用してgsPDFmarksとマージする

見てhttp://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/このスクリプトはpdf-merge.pyあなた(または私が)したいことを正確に行います。

pdf-merge.py --output=merged.pdf input1.pdf input2.pdf

彼のスクリプトは少し改善が必要な場合があります。

  1. Unicode処理
  2. 人が調整できるようにブックマークファイルを出力します。

とにかく働かなければならない

答え4

jPDF調整(Java、Unix / Linuxで実行)ブックマークを変更できますが、これを使用してスクリプトを作成できるかどうかはわかりません。

スクリプトの場合、唯一のデフォルトのUnix / Linuxオプションはpdflatexパッケージとpdfpagesパッケージのようです。しかし、まだLaTeXユーザーではない場合は、学習曲線があります。

編集:実際にGhostscriptを使用すると可能です。ねえまたはここまたは ここ

関連情報