如何从 PDF 文件中删除图像

如何从 PDF 文件中删除图像

我有一个相当大的(~100MB)PDF 文档,其中包含大量图像(如插图和背景图像),我想获得一份不带图像的 PDF 副本,但我不知道如何做到这一点。

我并不是说将其仅转换为文本,而是想保留段落/表格/多列的原样。

我对命令行很熟悉,并且我拥有多台装有不同发行版的计算机可以使用。

答案1

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

甚至还有两个新参数可以添加,以便有选择地删除内容类型“向量”“文本”

  1. -dFILTERIMAGE:产生删除所有光栅图像的输出。

  2. -dFILTERTEXT:产生所有文本元素都被删除的输出。

  3. -dFILTERVECTOR:产生删除所有矢量图的输出。

可以将其中任意两个选项组合起来。(如果将这三个选项组合起来,所有页面都会被清空……)

例子

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

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


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

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

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

下图说明了结果:


顶行,从左至右:删除所有“文本”;删除所有“图像”;删除所有“矢量”。最下面一行,从左至右:仅保留“文本”;仅保留“图像”;仅保留“矢量”。
上行,从左到右:删除所有“文本”;删除所有“图像”;删除所有“矢量”。下行,从左到右:仅保留“文本”;仅保留“图像”;仅保留“矢量”。


答案2

cpdf -draft original.pdf -o version_without_images.pdf

它不在存储库中,但你可以找到下载(预编译或者来源) 在他们的网站


手动的

15.1 草稿文件

-draft 选项会从文件中删除位图(照片)图像,这样打印时墨水会更少。也可以选择添加 -boxes 选项,用一个十字框填充空白处,表示图像所在的位置。这并不能保证在所有情况下都完全可见(位图可能已被矢量对象部分覆盖或被剪切到原始图像中)。例如:

 cpdf -draft -boxes in.pdf -o out.pdf

答案3

而@Rinzwind 的答案是正确的事,我只想评论一下“中间”解决方案。通常,您可以使用以下方法大大减小图像的大小ghostscript

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
   -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf original.pdf

...有时它对于校对来说真的很方便。编写 PDF 的手册页是这里

答案4

您可以使用掌握 PDF 编辑器(适用于 Windows、Linux、macOS):

  1. 打开 PDF
  2. 删除那些图片
  3. 另存为新的 PDF 文件

您可以从 Ubuntu 软件中心下载它。

相关内容