ブックマークをPDFに追加および編集する


22

ブックマークを使用してPDFファイルからメタデータを取得することによりpdftk、PDFメタデータのブックマークの形式を確認します。だから、私はpdftk、PDFファイルのブックマークを追加および編集することが可能であると推測しています。

ここに私が従う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

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

私は、新しいPDFファイルからメタデータを取得する場合out.pdfによってpdftk out.pdf dump_data > out.info、ノーブックマークは存在しませんout.info。ブックマークが正常に追加されなかったようです。

間違いがあるのではないかと思っていましたか?pdftkではなく、pdfファイルのブックマークを追加および編集するにはどうすればよいですか?


1
この小さなグラフィカルツールは私のために働いた。(PDF Mod 0.9.1)apps.fedoraproject.org/packages/pdfmod
abhijit

回答:


12

バージョン1.45(2012-12-06)のように見えますが、pdftkではupdate_infoコマンドを使用してブックマークを変更できます。

update_infoを使用して、PDFのブックマークを追加または変更できるようになりました。

経由:http : //www.pdflabs.com/docs/pdftk-version-history/


3
これは私にとって非常にうまくいきました。BookmarkBegin各ブックマークエントリが欠落する前に、タグの上の入力ファイルに追加する必要があります。
danielp 14

4

jPDFtweak(Java、Unix / Linux上で実行)はブックマークを変更できますが、それを使って何かスクリプトを作成できるかどうかはわかりません。

スクリプトについては、あなたの唯一のネイティブUnix / Linuxオプションはpdflatexとpdfpagesパッケージであると思います。ただし、LaTeXをまだ使用していない場合、これは学習曲線です。

編集:実際にはゴーストスクリプトで可能かもしれません:こちらまたはこちらまたは こちらをご覧ください


4

これらのUNIXスクリプトを引き続き使用する場合は、

  1. からダンプされたブックマークデータを抽出する pdftk
  2. ダンプされたブックマークデータをpdfmarks形式に変換する追加のスクリプトを1つ作成します。これはghostscriptコマンドgsが受け入れられます。
  3. gsスクリプトを使用してそれらをpdfmarksと一緒にマージします

見てみましょうhttp://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/スクリプトがpdf-merge.pyあなた(またはI)が欲しいまさにありません。

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

彼のスクリプトでいくつかのマイナーな改善を行うことができます

  1. ユニコード処理
  2. ブックマークファイルを出力し、ユーザーが調整できるようにします

とにかく、それは動作するはずです


1つの賛成票!ありがとう!あなたの台本を楽しみにしています!
ティム

リンクが機能していないようです。修正してもらえますか?
魚モニター

4

pdftkは間違いなく正しいツールです(正しい構文を使用):

BookmarkBegin
BookmarkTitle: Chapter 1
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Paragraph 1.1
BookmarkLevel: 2
BookmarkPageNumber: 1

2

カレブ、

私の知る限り、PDF仕様に基づくブックマークは、などの診断ツールを介して挿入することはできませんpdftk。メタデータを更新して、存在しないチャプターやブックマークランディングアンカーを参照することは間違いなく機能しません。PDFが不整合になったり、開けなくなったりする可能性もあります。

最終的には、このチュートリアルで提案していることを行うためにjava + iTextライブラリを使用することになりましたが、毎日何百ものPDFを扱っているため、自動化する必要がありました。1回限りの場合は、Adobe Acrobatでこれを行うことができます。


2

このすべての良い答えを要約するには:

GitHubには、さまざまなPDFブックマーク形式を変換できるbmconverterプロジェクトがあります。pdftk出力をjpdftweak形式に変換できますが、jpdftweakを使用する場合は、pdftk出力をcsvに変換する必要はありません。jpdftweak内からすべての作業を行うことができます。

残念ながらpdfmarksはプロジェクトでサポートされていませんが、幸いなことに誰かがpdftk出力をpdfmarksに変換できるbmconverterの問題でスクリプトを投稿しました。ghostscriptバッチオプションはオプションです


2

pdftkブックマーク形式は書くのが少し面倒です。代わりに私が使用して独自のスクリプトを作成しbashsedpdftkpython3。このリポジトリで確認してください:https : //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()が自動的に作成されます。


1

BookmarkBegin各ブックマークエントリの前に追加するだけです。

BookmarkBegin
BookmarkTitle: Front cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
    ⋮

0

手順1で使用したリダイレクトにより、update_infoが正しく機能しなくなります。代わりに、pdftkに出力ファイルを指定する必要があります。

pdftk in.pdf dump_data output in.info

同様の質問からこの回答を参照してください:https : //stackoverflow.com/a/30308964/3158933

リダイレクトを使用して作成したファイルのファイルサイズはわずかに大きく、pdftkはupdate_infoコマンドの実行時に「警告:LoadDataFile()の予期しないケース1;続行」メッセージを発行します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.