首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageMagick pdf至黑白pdf

ImageMagick pdf至黑白pdf
EN

Stack Overflow用户
提问于 2013-02-02 23:32:55
回答 1查看 3.5K关注 0票数 5

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

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

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-19 14:15:02

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

  1. 使用pdfseparatepdfunite (波普尔工具)拆分和连接PDF。
  2. 使用pdfinfo + grep/egrep以及例如sed提取原始密度。这不能保证PDF文件的大小相同,只是相同的DPI。

将所有这些放在一起,您可以得到一系列bash命令,如下所示:

代码语言:javascript
复制
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)中放置前导零),这是一个很脏的解决方法。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14667700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档