一連の圧縮されていないファイルから圧縮されたコピーにブックマークを送信したい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:この質問は、既に知っているブックマークのコピーよりもスクリプトに関するものです。タイトルを変えましょうか?