You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Ghostscript转换PDF使内部图片采用CCITT编码

需求实现可行性

该需求完全可以通过Ghostscript实现,它同时支持PDF内彩色/灰度图像转二值黑白、CCITT Group 4和JBIG2两种压缩编码输出,是处理这类需求的首选CLI工具。

Ghostscript具体操作方法

方案一:CCITT Group 4编码(全兼容)

CCITT Group 4是通用黑白文档编码标准,所有PDF阅读器都支持,适合需要兼容老旧设备/软件的场景,操作命令如下:

gs -sDEVICE=pdfwrite \
-dNOPAUSE -dBATCH -dQUIET \
-sProcessColorModel=DeviceGray \
-sColorConversionStrategy=Gray \
-dOverrideICC \
-dThreshold=128 \
-dEncodeColorImages=false \
-dEncodeGrayImages=true \
-dGrayImageFilter=/CCITTFaxEncode \
-dGrayImageDict<< /K -1 /BlackIs1 true /Columns 1728 /Rows 0 >> \
-sOutputFile=output_compressed.pdf input.pdf

参数说明:

  • -sColorConversionStrategy=Gray:强制将所有彩色内容转换为灰度
  • -dThreshold=128:灰度转二值黑白的阈值,可根据实际画面效果在0~255之间调整,数值越高转出来的画面越亮
  • /K -1:指定使用CCITT Group 4编码,若改为/K 0则使用CCITT Group 3编码

方案二:JBIG2编码(高压缩率)

JBIG2的压缩率比CCITT Group 4高30%~50%,适合追求极致体积的场景,仅Ghostscript 9.50及以上版本原生支持,操作命令如下:

gs -sDEVICE=pdfwrite \
-dNOPAUSE -dBATCH -dQUIET \
-sProcessColorModel=DeviceGray \
-sColorConversionStrategy=Gray \
-dOverrideICC \
-dThreshold=128 \
-dEncodeColorImages=false \
-dEncodeGrayImages=true \
-dGrayImageFilter=/JBIG2Encode \
-dGrayImageDict<< /JBIG2Lossless true >> \
-sOutputFile=output_compressed.pdf input.pdf

参数说明:

  • 将/JBIG2Lossless改为false可开启有损压缩,体积会进一步缩小,文字类内容损失几乎不可感知
替代CLI工具

如果Ghostscript的转码效果不符合预期,可以使用以下工具组合实现需求:

  • jbig2enc + img2pdf + pdftocairo:先用pdftocairo将PDF每页导出为灰度图像,再用jbig2enc做精细化二值化和编码,最后用img2pdf重新封装为PDF,二值化效果和压缩率都比Ghostscript默认配置更高
  • QPDF:可配合Ghostscript做后处理,移除PDF内冗余的元数据、未使用的内嵌字体、空白对象,还可以线性化优化提升加载速度,补充操作命令:qpdf --linearize --object-streams=generate output_compressed.pdf output_final.pdf

内容的提问来源于stack exchange,提问作者amit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:24:04