5

ImageMagick を使用して PDF ファイルを白黒 PDF ファイルに変換したいと考えています。しかし、私には 2 つの問題があります。次のコマンドを使用します。

convert -colorspace Gray  D:\in.pdf D:\out.pdf
  1. しかし、このコマンドは最初のページのみを変換します... すべてのページを変換するにはどうすればよいですか?
  2. このコマンドを使用した後の解像度はひどいものです...しかし、-density 300オプションを使用すると、ファイルサイズが2倍以上に増加しました。同じDPI設定を使いたいのですが、どうやって使うのですか?

どうもありがとう

4

1 に答える 1

2

必要なコマンド ライン ツールがすべてインストールされていると仮定すると、次の操作を実行できます。

  1. pdfseparateおよびpdfunite( Popplerツール)を使用して PDF を分割および結合します。
  2. 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/ ) があります ( に先行ゼロを入れる方法がわかりませんでした)。printfpdfseparate

注 2: ImageMagick は PDF を別のバイナリ イメージ ファイルとして扱うので、たとえば主にテキスト ファイルの場合、これは巨大な PDF になります。したがって、これはテキストベースの PDF を白黒に変換する方法としては非常に不適切です。

于 2013-06-19T14:15:02.750 に答える