如何从PDF文件中删除图像


13

我有一个相当大的(〜100MB)PDF文档,其中包含很多图像(插图和背景图像),我想得到一个没有图像的pdf副本,但是我不知道如何去做。

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

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


当我们谈论一个500页的文档,每页上有多张图像时,我正在寻找一种自动删除每张图片的方法。
Ornux 2014年

Answers:


14
cpdf -draft original.pdf -o version_without_images.pdf

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


手册

15.1文件草案

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

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

1
正是我想要的。输出文件是完美的。非常感谢!
Ornux 2014年

@Rinzwind请注意,“他们的网站”链接实际上是一个zip文件。
2014年

嗯..对我来说,它总是在文本之间添加几乎随机的行,并且文件大小实际上略有增加,而不是缩小。
Henning Koehler

23

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

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

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

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

  3. -dFILTERVECTOR:产生一个输出,其中所有矢量图形均被删除。

这些选项中的任何两个都可以组合。(如果将所有3个都合并,则所有页面都将变为空白...)

例子

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

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


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

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

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

下图说明了结果:


第一行,从左起:删除所有“文本”;所有“图像”均已删除;删除所有“向量”。底部行,从左至右:仅保留“文本”;仅保留“图像”;仅保留“向量”。
第一行,从左起:删除所有“文本”; 所有“图像”均已删除; 删除所有“向量”。 底部行,从左至右:仅保留“文本”; 仅保留“图像”; 仅保留“向量”。



2

@Rinzwind的答案是正确的,我只想评论“中途”解决方案。通常,您可以使用ghostscript

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

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


@KurtPfeifle /screen将(除其他事项外)将位图图像的分辨率设置为72dpi。因此,是的,如果您的图像具有较小的DPI,则可以增加文件大小。这就是为什么我使用“通常”一词的原因(在“并非总是,但经常”的意义上)。随意拒绝您想要的任何东西。
Rmano

运行此命令:for s in screen default ; do gs -o /dev/null -sDEVICE=pdfwrite -dPDFSETTINGS=/${s} -c "currentpagedevice {exch ==only ( ) print === } forall" | sort | tee ghostscript---pdfwrite-PDFSETTINGS-${s}--pagedevice-settings.txt; done。它将产生两个文本文件,您可以使用进行比较sdiff -sbB $[file1}.txt ${file2}.txt。现在你知道准确完全 所有通过引入不同的设置-dPDFSETTINGS=/screen
Kurt Pfeifle16年

做完了 仍然看不到哪个选项可以提供/screen/default--- 72dpi和150dpi 更大的文件,经过优化,放弃EPS预览...但是,这不是一个大问题。人们将测试并选择更好的解决方案。
Rmano

抱歉-也许我现在为我的第一句话的坦率而道歉。老实说,我似乎只是想起我以前的调查(几年前的调查),/screen结果确实很差。可能是我的记忆失败了,或者我与混淆了/epub。我给您的命令来自内存,因为我很确定它会显示我的意思。现在我再次重新运行它,我再也看不到我的期望了:几年前我进行了更多的扩展测试。然后,许多(CID?/ CFF?)字体在生成的PDF中都被光栅化了。一旦我有更多的时间,我就必须再次讨论这个问题... :-)
Kurt Pfeifle

0

您可以使用pdf母版编辑器,删除这些图像并另存为新的pdf文件。您可以从Ubuntu软件中心下载它。


我只是安装它尝试一下,但是我看不到自动的方法。鉴于它是一个500页的文档,因此在这里我看不到手动删除作为解决方案。我错过了什么 ?
Ornux 2014年

不,您没有错过任何东西,我认为图像很大,因此您想删除它们,从未想过那么多图像。无论如何是个好问题。
Sudheer 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.