必要なコマンド ライン ツールがすべてインストールされていると仮定すると、次の操作を実行できます。
pdfseparate
およびpdfunite
( Popplerツール)を使用して PDF を分割および結合します。
pdfinfo
プラスgrep
/egrep
と、たとえば を使用して元の密度を抽出しますsed
。これは、PDF ファイルの同じサイズを保証するものではなく、同じ DPI を保証するものではありません。
すべてをまとめると、次のような一連の bash コマンドを使用できます。
pdfseparate in.pdf temp-%d.pdf; for i in $(seq $(ls -1 temp-*.pdf | wc -l)); do mv temp-$i.pdf temp-$(printf %03d $i).pdf; done
for f in temp-*.pdf; do convert -density $(pdfinfo $f | egrep -o 'Page size:[[:space:]]*[0-9]+(\.[0-9]+)?[[:space:]]*x[[:space:]]*[0-9]+(\.[0-9]+)?' | sed -e 's/^Page size:\s*//'| sed -e 's/\s*x\s*/x/') -colorspace Gray {,bw-}$f; done
pdfunite bw-temp-*.pdf out.pdf
rm {bw-,}temp-*.pdf
注 1: 10 ~ 999 ページの PDF を適切に並べ替えるための汚い回避策 ( for
/ wc
/ seq
/ ) があります ( に先行ゼロを入れる方法がわかりませんでした)。printf
pdfseparate
注 2: ImageMagick は PDF を別のバイナリ イメージ ファイルとして扱うので、たとえば主にテキスト ファイルの場合、これは巨大な PDF になります。したがって、これはテキストベースの PDF を白黒に変換する方法としては非常に不適切です。