2013-02-02 52 views
2

我想将一个pdf文件转换为ImageMagick的黑白PDF文件。但我有两个问题: 我使用这个命令:ImageMagick pdf to black and white pdf

convert -colorspace Gray D:\in.pdf D:\out.pdf 
  1. 但这个命令转换仅在第一页......如何将所有页面转换?
  2. 使用此命令后,分辨率是可怕的......但如果我使用-density 300选项,文件大小增加了一倍以上。所以我想使用相同的DPI设置,但是如何使用?

非常感谢

回答

1

假设你已经安装了所有必要的命令行工具,你可以做到以下几点:

  1. 斯普利特和使用pdfseparatepdfunitePoppler工具)加入PDF。
  2. 使用pdfinfogrep/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:有一个肮脏的解决方法(for/wc/seq/printf)为正确的顺序10-999页PDFs(我没有弄清楚如何把前导零置于pdfseparate)。注意2:我猜ImageMagick将PDF视为另一个二进制图像文件,因此主要用于文本文件,这将导致大量的PDF文件。因此,这是一种非常糟糕的方法来将基于文本的PDF转换为B & W.