Answers:
cpdf -draft original.pdf -o version_without_images.pdf
它不在存储库中,但是您可以在其网站上找到下载(预编译或源代码)。
手册:
15.1文件草案
-draft选项从文件中删除位图(摄影)图像,以便可以用更少的墨水打印。(可选)可以添加-boxes选项,并使用表示图像位置的交叉框填充空白处。这不能保证在所有情况下都是完全可见的(位图可能已被矢量对象部分覆盖或被剪切在原始对象中)。例如:
cpdf -draft -boxes in.pdf -o out.pdf
最新版本的Ghostscript也可以做到这一点。只需将参数添加-dFILTERIMAGE
到您的命令中即可。
甚至可以添加两个新参数,以有选择地删除内容类型“ vector”和“ text”:
-dFILTERIMAGE
:产生一个输出,其中所有栅格图像都被删除。
-dFILTERTEXT
:产生一个输出,其中所有文本元素均被删除。
-dFILTERVECTOR
:产生一个输出,其中所有矢量图形均被删除。
这些选项中的任何两个都可以组合。(如果将所有3个都合并,则所有页面都将变为空白...)
这是示例PDF页面的屏幕截图,其中包含上述所有3种内容:
原始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
下图说明了结果:
第一行,从左起:删除所有“文本”;所有“图像”均已删除;删除所有“向量”。底部行,从左至右:仅保留“文本”;仅保留“图像”;仅保留“向量”。
@Rinzwind的答案是正确的,我只想评论“中途”解决方案。通常,您可以使用ghostscript与
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf original.pdf
...有时真的很方便校对。编写PDF的手册页在这里。
/screen
将(除其他事项外)将位图图像的分辨率设置为72dpi。因此,是的,如果您的图像具有较小的DPI,则可以增加文件大小。这就是为什么我使用“通常”一词的原因(在“并非总是,但经常”的意义上)。随意拒绝您想要的任何东西。
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
!
/screen
比/default
--- 72dpi和150dpi 更大的文件,经过优化,放弃EPS预览...但是,这不是一个大问题。人们将测试并选择更好的解决方案。
/screen
结果确实很差。可能是我的记忆失败了,或者我与混淆了/epub
。我给您的命令来自内存,因为我很确定它会显示我的意思。现在我再次重新运行它,我再也看不到我的期望了:几年前我进行了更多的扩展测试。然后,许多(CID?/ CFF?)字体在生成的PDF中都被光栅化了。一旦我有更多的时间,我就必须再次讨论这个问题... :-)
您可以使用pdf母版编辑器,删除这些图像并另存为新的pdf文件。您可以从Ubuntu软件中心下载它。