我想使用任何可能的命令行工具删除/删除 PDF 中的所有图像,只留下 PDF 中的文本/字体。
我尝试-dGraphicsAlphaBits=1
在 Ghostscript 命令中使用,但图像存在但像一个大像素。
我想使用任何可能的命令行工具删除/删除 PDF 中的所有图像,只留下 PDF 中的文本/字体。
我尝试-dGraphicsAlphaBits=1
在 Ghostscript 命令中使用,但图像存在但像一个大像素。
时光荏苒,Ghostscript 的发展也在进步……
最新版本具有以下新命令行参数。这些可以添加到命令行:
-dFILTERIMAGE
:产生一个输出,其中所有光栅图都被删除。
-dFILTERTEXT
: 产生一个输出,其中所有文本元素都被删除。
-dFILTERVECTOR
:产生一个输出,其中所有矢量图都被删除。
这些选项中的任何两个都可以组合。
示例命令:
gs -o noimage.pdf -sDEVICE=pdfwrite -dFILTERIMAGE input.pdf
更多详细信息(包括一些说明性屏幕截图)可以在我对“如何从 PDF 中删除所有图像?”的回答中找到。.
不,AFAIK,不可能使用命令行工具删除PDF 中的所有图像。
无论如何,您的请求的目的是什么?节省文件大小?删除图像中包含的信息?或者 ...?
无论您的目标是什么,这里有一个命令可以将所有图像下采样到 2 ppi 的分辨率(更新: 1 ppi 不起作用)。它同时实现了两个目标:
以下是如何选择性地执行此操作,仅适用于第 33 页上的图像original.pdf
:
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 种类型的任意组合。
要将图像和文本分隔到不同的图层,遗憾的是没有可用的免费/开源软件实用程序。也不是免费的啤酒……
这项任务只能通过各种付费软件解决方案来完成。由于您没有在问题中排除这一点,但您要求使用'whatever commandline tool possible',我会告诉您我最喜欢的一个:
有一个 CLI 使用版本(包括一个强大的 SDK,支持大量低级 PDF 操作),所有主要操作系统平台都支持该版本,包括 Linux。
callas 为您提供功能齐全的免费测试许可证(我相信)启用 14 天。
gs -o noImages.pdf -sDEVICE=pdfwrite -dFILTERIMAGE input.pdf
gs -o noText.pdf -sDEVICE=pdfwrite -dFILTERTEXT input.pdf
gs -o noVectors.pdf -sDEVICE=pdfwrite -dFILTERVECTOR input.pdf
gs -o onlyImages.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERTEXT input.pdf
gs -o onlyText.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERIMAGE input.pdf
gs -o onlyVectors.pdf -sDEVICE=pdfwrite -dFILTERIMAGE -dFILTERTEXT input.pdf