5

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

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

非常感谢

4

1 回答 1

2

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

  1. pdfseparate使用和pdfunitePoppler工具)拆分和连接 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/ printf)(我不知道如何在 中放置前导零pdfseparate)。

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

于 2013-06-19T14:15:02.750 回答