使用Ghostscript或ImageMagick删除/删除PDF中的所有图像

时间:2013-12-19 08:29:25

标签: pdf imagemagick ghostscript poppler

我想删除/删除PDF中的所有图像,只留下PDF中的文本/字体,无论使用什么命令行工具。

我尝试在Ghostscript命令中使用-dGraphicsAlphaBits=1,但图像存在,但像一个大像素。

4 个答案:

答案 0 :(得分:19)

您可以使用cpdf草稿选项:

cpdf -draft in.pdf -o out.pdf

这应该适用于大多数情况,但如果它没有为您做正确的事情,请提交错误报告。

披露:我是cpdf的作者。

答案 1 :(得分:5)

时间过去了,Ghostscript的开发已经取得了进展......

最新版本具有以下新命令行参数。这些可以添加到命令行:

  1. -dFILTERIMAGE :生成一个输出,其中删除了所有光栅图。

  2. -dFILTERTEXT :生成一个输出,其中删除了所有文本元素。

  3. -dFILTERVECTOR :生成一个输出,其中删除了所有矢量绘图。

  4. 可以合并这些选项中的任何两个。

    示例命令:

    gs -o noimage.pdf -sDEVICE=pdfwrite -dFILTERIMAGE input.pdf
    

    更多详细信息(包括一些说明性的屏幕截图)可以在我对 "How can I remove all images from a PDF?" 的回答中找到。

答案 2 :(得分:2)

不,AFAIK,使用命令行工具删除 PDF中的所有图片是不可能的。

无论如何,您的请求的目的是什么?保存文件大小?删除图片中包含的信息?或者......?

解决方法

无论您的目标是什么,这里都是一个命令,可以将所有图像下采样到2 ppi的分辨率( 更新: 1 ppi不起作用)。这一次实现了两个目标:

  • reduce filesize
  • 使所有图像基本上无法理解

以下是有选择地执行此操作的方法, original.pdf第33页上的图片:

gs                               \
  -o images-uncomprehendable.pdf \
  -sDEVICE=pdfwrite              \
  -dDownsampleColorImages=true   \
  -dDownsampleGrayImages=true    \
  -dDownsampleMonoImages=true    \
  -dColorImageResolution=2       \
  -dGrayImageResolution=2        \
  -dMonoImageResolution=2        \
  -dFirstPage=33                 \
  -dLastPage=33                  \
   original.pdf

如果您想在所有页面上为所有图片执行此操作,请跳过-dFirstPage-dLastPage参数。

如果要从图像中删除所有颜色信息,请在同一命令中将它们转换为灰度(在Stackoverflow上搜索其他详细信息,详细讨论)。


更新:最初,我建议使用1 PPI的分辨率。这似乎不适用于Ghostscript。我现在用2 PPI进行测试。这很有效。


更新2:另请参阅以下(新)问题及答案:

它提供了一些示例PostScript代码,可以完全删除PDF中的所有(光栅)图像,而页面布局的其余部分保持不变。

它还反映了Ghostscript的扩展新功能,它现在可以选择性地删除PDF中的所有文本或所有光栅图像或所有矢量对象,或这三种类型的任意组合。

答案 3 :(得分:2)

要将图片和文字分隔到不同的图层,遗憾的是 没有可用的免费/开源软件实用程序 。也不是免费的啤酒...

此任务只能通过 各种付费软件解决方案 来实现。既然你没有在你的问题中排除这个,但是你要求'无论命令行工具是什么',我会告诉你我最喜欢的一个:

可以使用CLI使用的版本(包括支持大量低级PDF操作的强大SDK),并且所有主要操作系统平台都支持此功能,包括Linux。

callas为您提供功能齐全的免费test license,已启用(相信)14天。