ImageMagick pdf到黑白pdf

时间:2013-02-02 23:32:55

标签: imagemagick imagemagick-convert pdf-manipulation

我想用ImageMagick将pdf文件转换为黑白PDF文件。但我有两个问题: 我用这个命令:

convert -colorspace Gray  D:\in.pdf D:\out.pdf
  1. 但是这个命令只转换FIRST页面......如何转换所有页面?
  2. 使用此命令后,分辨率很差......但如果我使用-density 300选项,则文件大小增加了一倍以上。所以我想使用相同的DPI设置,但如何使用?
  3. 非常感谢

1 个答案:

答案 0 :(得分:1)

假设您已安装所有必需的命令行工具,您可以执行以下操作:

  1. 使用pdfseparatepdfunitePoppler工具)拆分并加入PDF。
  2. 使用pdfinfogrep / egrep提取原始密度,例如sed。这不保证PDF文件的大小相同,只是相同的DPI。
  3. 总而言之,您可以拥有一系列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页PDF(我没有弄清楚如何在pdfseparate)中放置前导零。

    注意2:我猜ImageMagick将PDF视为另一个二进制图像文件,因此例如对于主要是文本文件,这将导致巨大的PDF。因此,这是将基于文本的PDF转换为B& W的非常糟糕的方法。