PDFファイルをマージし、各ファイルをアイテムとして含むディレクトリを自動的に作成します。

PDFファイルをマージし、各ファイルをアイテムとして含むディレクトリを自動的に作成します。

chapter1.pdf複数のPDFファイル(など)がありchapter2.pdf、各ファイルは本の一枚です。今、私はそれらを1つのpdfにマージする方法を知っていますが(私はpdfunitepopplerのコマンドを使用します)、出力ファイルが大きいので、リストを書かないと章を見つけるのは難しいです。では、マージされた各章がアイテムである埋め込み目次をどのように生成しますか?

章リストとそのページ番号を含む出力ファイルにページを作成したくありません。これらの機能をサポートするすべてのPDFリーダー(または電子書籍デバイス)から検索できるPDFファイルのインデックス/カタログメタデータが必要です。

ベストアンサー1

非破壊的@bu5hmanの回答バージョン:

#!/bin/bash

out_file="combined.pdf"
bookmarks_file="/tmp/bookmarks.txt"
bookmarks_fmt="BookmarkBegin
BookmarkTitle: %s
BookmarkLevel: 1
BookmarkPageNumber: %d
"

rm -f "$bookmarks_file" "$out_file"

declare -a files=(*.pdf)
page_counter=1

# Generate bookmarks file.
for f in "${files[@]}"; do
    title="${f%.*}"
    printf "$bookmarks_fmt" "$title" "$page_counter" >> "$bookmarks_file"
    num_pages="$(pdftk "$f" dump_data | grep NumberOfPages | awk '{print $2}')"
    page_counter=$((page_counter + num_pages))
done

# Combine PDFs and embed the generated bookmarks file.
pdftk "${files[@]}" cat output - | \
    pdftk - update_info "$bookmarks_file" output "$out_file"

仕組みは次のとおりです。

  1. 生成するbookmarks.txt
  2. PDFをcombined.pdf
  3. combined.pdfに更新されましたbookmarks.txt

おすすめ記事