ImageMagick将PDF转换为黑白PDF

5
我希望使用ImageMagick将pdf文件转换为黑白PDF文件,但我遇到了两个问题: 我使用以下命令:
convert -colorspace Gray  D:\in.pdf D:\out.pdf
  1. 但是这个命令只转换了第一页...如何转换所有页面?
  2. 使用此命令后,分辨率变得很差...但是如果我使用 -density 300选项,文件大小增加了一倍以上。所以我想使用相同的DPI设置,但是该怎么做呢?

非常感谢

1个回答

2
假设您已经安装了所有必要的命令行工具,您可以执行以下操作:
  1. 使用 pdfseparatepdfunitePoppler 工具)来拆分和合并 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:有一个肮脏的解决方案(for/wc/seq/printf),可以对10-999页的PDF文档进行正确排序(我没有找到如何在pdfseparate中放置前导零)。
注意2:我猜ImageMagick将PDF文件视为另一种二进制图像文件,因此对于主要是文本文件的PDF文件,这将导致PDF文件巨大。因此,将基于文本的PDF文件转换为黑白是一种非常糟糕的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接