あるPDFから別のPDFにブックマークをコピーするスクリプト

あるPDFから別のPDFにブックマークをコピーするスクリプト

一連の圧縮されていないファイルから圧縮されたコピーにブックマークを送信したいpdf(これらのコピーには元のブックマークはありません)。

私はこれを使って一つずつ行う方法を知っていますpdftk。まず、ブックマークを抽出する必要があります。

pdftk file.pdf dump_data output file.txt

その後、圧縮コピーに転送する必要があります。

pdftk file_mrc.pdf update_info file.txt output file_mrc_updated.pdf

(私の圧縮pdfファイルにはmrcサフィックスがあります。)

この場合、何百ものpdfファイルと対応する圧縮pdfコピーがあるので、プロセスを自動化したいと思います。

すべてのファイルからブックマークを抽出する方法を見つけfindましたが、次のコマンドを使用してブックマークをコピーにダンプする方法がわかりません。

find . -type f ! -name "*mrc*" -exec pdftk '{}' dump_data output {}.txt ';'

答え1

ファイル名に改行などの奇妙な内容がないと仮定すると、次のように動作します。

find -type f ! -name "*mrc*" | while read file ; do pdftk "$file" dump_data output "${file%.pdf}.txt" && pdftk "${file%.pdf}_mrc.pdf" update_info "${file%.pdf}.txt" output "${file%.pdf}_mrc_updated.pdf" ; done

ただし、必要に応じて既存のスクリプトを使用してこれを行うためのより読みやすい方法があります。

#!/bin/bash
for file in *.pdf ; do
    if [[ "$file" =~ "mrc" ]] ; then
        continue
    fi
    commonname="${file%.pdf}"
    pdftk "$file" dump_data output "${commonname}.txt"
    pdftk "${commonname}_mrc.pdf" update_info "${commonname}.txt" output "${commonname}_mrc_updated.pdf" 
done

(すべて同じフォルダにあるとします。)

PS:この質問は、既に知っているブックマークのコピーよりもスクリプトに関するものです。タイトルを変えましょうか?

関連情報