如何从 PDF 文件中删除图像

Orn*_*nux 15 command-line pdf

我有一个相当大(~100MB)的 PDF 文档,里面有很多图片(作为插图和背景图片),我想要一份没有图片的 pdf 文件,但我不知道如何去做。

我不是在谈论仅将其转换为文本,我想保持段落/表格/多列原样。

我对命令行很满意,并且有几台可以使用不同发行版的计算机。

Kur*_*fle 23

最新版本的 Ghostscript 也可以做到这一点。只需将参数添加-dFILTERIMAGE到您的命令中即可。

甚至可以添加两个新参数,以便有选择地删除内容类型“vector”“text”

  1. -dFILTERIMAGE: 产生一个输出,其中所有光栅图像都被删除。

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

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

这些选项中的任何两个都可以组合。(如果您将所有 3 个组合在一起,您将得到所有页面都被清空...)

例子

这是一个示例 PDF 页面的屏幕截图,其中包含上述所有 3 种类型的内容:

包含“图像”、“矢量”和“文本”元素的原始 PDF 页面的屏幕截图
包含“图像”、“矢量”和“文本”元素的原始 PDF 页面的屏幕截图。


运行以下 6 个命令将创建剩余内容的所有 6 种可能变体:

 gs -o noIMG.pdf -sDEVICE=pdfwrite -dFILTERIMAGE input.pdf
 gs -o noTXT.pdf -sDEVICE=pdfwrite -dFILTERTEXT input.pdf
 gs -o noVCT.pdf -sDEVICE=pdfwrite -dFILTERVECTOR input.pdf

 gs -o onlyIMG.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERTEXT input.pdf
 gs -o onlyTXT.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERIMAGE input.pdf
 gs -o onlyVCT.pdf -sDEVICE=pdfwrite -dFILTERIMAGE -dFILTERTEXT input.pdf

下图说明了结果:


顶行,从左起:删除所有“文本”;删除了所有“图像”;删除了所有“向量”。底行,从左起:仅保留“文本”;只保留“图像”;只保留了“向量”。
顶行,从左起:删除所有“文本”; 删除了所有“图像”; 删除了所有“向量”。 底行,从左起:仅保留“文本”; 只保留“图像”; 只保留了“向量”。



Rin*_*ind 15

cpdf -draft original.pdf -o version_without_images.pdf
Run Code Online (Sandbox Code Playgroud)

它不在存储库中,但您可以在他们的网站上找到下载(预编译源代码)。


手册:

15.1 文件草案

-draft 选项从文件中删除位图(照片)图像,以便可以用更少的墨水打印它。或者,可以添加 -boxes 选项,用表示图像位置的交叉框填充留空的空间。这不能保证在所有情况下都完全可见(位图可能已被矢量对象部分覆盖或在原始图像中被剪裁)。例如:

 cpdf -draft -boxes in.pdf -o out.pdf
Run Code Online (Sandbox Code Playgroud)


Rma*_*ano 5

虽然@Rinzwind 的答案是正确的,但我只想评论“中途”解决方案。通常,您可以使用Ghostscript大大减小图像的大小

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
   -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf original.pdf
Run Code Online (Sandbox Code Playgroud)

...有时校对确实很方便。编写 PDF 的手册页在这里