Ghostscript 使用介绍
1. 简介
Ghostscript(GS) 是一款功能强大的 PostScript(PS)和 PDF 处理工具,支持 PDF 转换、压缩、合并、拆分、渲染等操作。
它同时提供命令行工具与开发库,适用于 Linux、Windows、macOS。
Ghostscript 常用于:
- PDF 压缩(减小体积)
- PDF 转换(如 PDF → 图片 / PS / EPS)
- PDF 合并与分割
- 修复损坏的 PDF
- 渲染 PDF 页面为图片(png/jpg/tiff)
- 配合 CUPS 实现打印任务处理
2. 安装 Ghostscript
macOS
brew install ghostscript
Ubuntu / Debian
sudo apt update
sudo apt install ghostscriptCentOS / RHEL
sudo yum install ghostscript
Windows
从官网下载安装包:
https://ghostscript.com/releases/
3. 基本命令格式
Ghostscript 主命令:
gs [选项...] 文件常用选项结构:
gs -sDEVICE=xxx -dNOPAUSE -dBATCH -dQUIET -sOutputFile=输出路径 输入文件说明:
| 参数 | 作用 |
|---|---|
| -sDEVICE | 指定输出类型(pdfwrite、png16m 等) |
| -sOutputFile | 输出路径 |
| -dNOPAUSE | 处理时不中断 |
| -dBATCH | 处理完自动退出 |
| -dQUIET | 静默模式 |
4. 常用设备(DEVICE)列表
| 类型 | DEVICE | 说明 |
|---|---|---|
| pdfwrite | 生成/压缩 PDF | |
| PNG | png16m | 24-bit 真彩色 PNG |
| JPG | jpeg | RGB jpg |
| TIFF | tiff24nc | 24-bit tiff |
| PS/EPS | ps2write、eps2write | 生成 PostScript/EPS |
| 其他 | bmp16m | Windows 位图 |
5. PDF 压缩(最常用)
Ghostscript 提供了不同级别 PDF 压缩预设:
| 级别 | 效果 | 参数 |
|---|---|---|
| 低质量(屏幕) | 最小体积 | /screen |
| 中质量(电子书) | 适中 | /ebook |
| 标准 | 最佳平衡 | /printer |
| 高质量 | 体积最大 | /prepress |
5.1 压缩 PDF 示例
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/screen \
-dNOPAUSE -dQUIET -dBATCH \
-sOutputFile=output.pdf input.pdf常用模式:
-dPDFSETTINGS=/screen # 低质量
-dPDFSETTINGS=/ebook # 中质量
-dPDFSETTINGS=/printer # 高品质打印
-dPDFSETTINGS=/prepress # 出版级别6. PDF 合并
Ghostscript 可以直接合并多个 PDF:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite \
-sOutputFile=merged.pdf file1.pdf file2.pdf file3.pdf7. PDF 分割(按页面范围)
导出 1–5 页:
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
-dFirstPage=1 -dLastPage=5 \
-sOutputFile=part.pdf input.pdf8. PDF → 图片导出
8.1 导出为 PNG
gs -sDEVICE=png16m -r300 \
-o page-%03d.png input.pdf- -r300 指定分辨率(300DPI)
- %03d 自动生成编号 001、002...
8.2 导出为 JPG
gs -sDEVICE=jpeg -r200 \
-o page-%03d.jpg input.pdf9. 图片 → PDF
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
-sOutputFile=output.pdf image1.jpg image2.jpg10. 修复损坏 PDF
Ghostscript 可以修复损坏或下载不完整的 PDF:
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
-sOutputFile=fixed.pdf broken.pdf11. 删除 PDF 安全限制
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
-sOutputFile=unlocked.pdf locked.pdf12. PDF 转 PS / EPS
PDF → PS
ps2ps input.pdf output.ps
等价于:
gs -sDEVICE=ps2write -sOutputFile=output.ps input.pdf
PDF → EPS
gs -sDEVICE=eps2write -o output.eps input.pdf
13. 调整 PDF 分辨率(Render)
渲染 PDF 时压缩图片,可以显著减小体积:
gs -sDEVICE=pdfwrite -dDownsampleColorImages=true \
-dColorImageResolution=120 \
-o out.pdf input.pdf14. 常用批处理脚本
批量压缩 PDF(shell)
for f in *.pdf; do
gs -sDEVICE=pdfwrite \
-dPDFSETTINGS=/screen \
-dNOPAUSE -dBATCH \
-sOutputFile=compressed-$f $f
done15. 常见错误与解决
错误:Error: /undefinedfilename
原因:文件路径包含空格,需加引号:
gs ... -sOutputFile="out.pdf" "my file.pdf"
错误:Unable to open the initial device
原因:权限不够或输出文件路径不存在 → 手动确保目录存在。
16. 官方文档与资源
- Ghostscript 官网
https://ghostscript.com/ - 文档
https://ghostscript.com/docs/ - 源码(GitHub)
https://github.com/ArtifexSoftware/ghostpdl/