标签 PDF转换 下的文章

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 ghostscript

CentOS / 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说明
PDFpdfwrite生成/压缩 PDF
PNGpng16m24-bit 真彩色 PNG
JPGjpegRGB jpg
TIFFtiff24nc24-bit tiff
PS/EPSps2write、eps2write生成 PostScript/EPS
其他bmp16mWindows 位图

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.pdf

7. PDF 分割(按页面范围)

导出 1–5 页:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
   -dFirstPage=1 -dLastPage=5 \
   -sOutputFile=part.pdf input.pdf

8. 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.pdf

9. 图片 → PDF

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
   -sOutputFile=output.pdf image1.jpg image2.jpg

10. 修复损坏 PDF

Ghostscript 可以修复损坏或下载不完整的 PDF:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
   -sOutputFile=fixed.pdf broken.pdf

11. 删除 PDF 安全限制

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH \
   -sOutputFile=unlocked.pdf locked.pdf

12. 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.pdf

14. 常用批处理脚本

批量压缩 PDF(shell)

for f in *.pdf; do
  gs -sDEVICE=pdfwrite \
     -dPDFSETTINGS=/screen \
     -dNOPAUSE -dBATCH \
     -sOutputFile=compressed-$f $f
done

15. 常见错误与解决

错误:Error: /undefinedfilename

原因:文件路径包含空格,需加引号:

gs ... -sOutputFile="out.pdf" "my file.pdf"

错误:Unable to open the initial device

原因:权限不够或输出文件路径不存在 → 手动确保目录存在。

16. 官方文档与资源