コマンドラインでPDFファイルを一つにまとめる

図に示すように、カレントディレクトリの一つ下の子ディレクトリ(ディレクトリ名:child)にA~Xまでの複数のPDFファイルが存在します。

これらのPDFファイルをとりまとめて1ファイルにするためのシェルスクリプトです。

 

#!/bin/bash
OutputPDF="./OutputPDF.pdf"
declare -a InputPDF=( `ls child/*.pdf` )
cp ${InputPDF[0]} ${OutputPDF}
for (( i=1; i<${#InputPDF[*]}; i++ ))
do
 echo $i ${InputPDF[$i]}
 pdftk ${OutputPDF} ${InputPDF[$i]} \
  cat output temp.pdf
 mv temp.pdf ${OutputPDF}
done

 

f:id:S_E_Hyphen:20180221153013j:plain

ページ順は ls の結果に依存してしまいます。もしページ順を厳密に指定したい場合は、 ls を用いるのではなく、配列変数 InputPDF に子ディレクトリ内のファイル名を直接代入して下さい。