补充说明
gs 是 Ghostscript 的主程序,一个 PostScript 与 PDF 解释器。它能把 PS/PDF 渲染成位图,也能在格式之间转换、合并拆分页面、压缩 PDF、嵌入字体,是许多打印与文档工具(如 ps2pdf、CUPS 过滤链)的底层依赖。
常见用途包括:把 PDF 转成 PNG/JPEG 预览图、压缩扫描版 PDF、提取或重排页面、修复损坏的 PDF、把 EPS 转成 PDF。它通过 -sDEVICE= 选择输出设备,用 -o 指定输出文件。
注意:Ghostscript 历史上多次出现与 -dSAFER 相关的安全漏洞。现代版本默认启用 SAFER 沙箱,不要为了“兼容”随意加 -dNOSAFER 处理来路不明的文件。压缩 PDF 会重新编码图像,可能损失清晰度或丢失部分交互特性。
语法
gs [选项] 输入文件...
选项
-sDEVICE=设备:输出设备,如pdfwrite、png16m、jpeg、tiff24nc-o 文件/-sOutputFile=文件:输出文件,-o隐含-dBATCH -dNOPAUSE-dBATCH:处理完所有文件后退出-dNOPAUSE:每页不暂停等待按键-dSAFER:启用安全沙箱(新版本默认)-q:安静模式,减少提示输出-r 分辨率:渲染分辨率,如-r300-dFirstPage=N -dLastPage=M:只处理指定页范围-dPDFSETTINGS=/screen|/ebook|/printer|/prepress:PDF 压缩预设-dCompatibilityLevel=1.5:指定输出 PDF 版本-sPAPERSIZE=a4:指定纸张尺寸-dNOSAFER:关闭沙箱(危险,仅在可信文件上使用)
实例
# PDF 转 300 DPI PNG(单页)
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 \
-dFirstPage=1 -dLastPage=1 -sOutputFile=page1.png input.pdf
# 每页导出一张 PNG
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r150 \
-sOutputFile=page-%03d.png input.pdf
# 压缩 PDF(电子书质量)
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 \
-dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -dSAFER \
-sOutputFile=out.pdf input.pdf
# 提取第 3 到第 5 页
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
-dFirstPage=3 -dLastPage=5 -sOutputFile=part.pdf input.pdf
# EPS 转 PDF
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \
-sOutputFile=figure.pdf figure.eps
ps2pdf、pdf2ps、eps2eps 等脚本都是 gs 的薄封装,处理常见转换时可以直接用它们。