ghostscript 参数

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 参数 正文

核心概念

在深入了解参数之前,需要理解 Ghostscript 的两个核心工作模式:

  1. 解释模式:这是 Ghostscript 的默认模式,它会读取一个 PostScript 文件,解释其中的指令,并在输出设备上生成结果,将 PostScript 渲染成位图图像或将 PDF 打印到物理打印机。
  2. 转换模式:这是最常用的模式之一,它将一个输入文件(如 PDF)转换为另一种格式(如 PNG, JPEG, PS),这种模式通过指定 -sDEVICE 参数来实现。

基本语法

Ghostscript 的基本命令行格式如下:

gs [options] [input files] [run]
  • [options]: 各种参数,用于控制 Ghostscript 的行为。
  • [input files]: 要处理的文件列表,可以是 .ps, .pdf, .eps 等。
  • [run]: PostScript 代码块,如果需要在脚本执行时运行,通常在转换模式下不需要。

主要参数分类详解

输入/输出与设备控制

这是最常用的一组参数,用于指定输入、输出和转换的目标格式。

参数 全称 描述 示例
-sDEVICE setdevice 指定输出设备,这是转换模式的关键。 -sDEVICE=png16m (输出为24位PNG)
-o outputfile 指定输出文件的路径 -o output.png
-sOutputFile setoutputfile -o 类似,但更明确地表示设置一个参数,当输出文件名包含空格或特殊字符时更安全。 -sOutputFile="my file.pdf"
-dNOPAUSE setnopause 禁止暂停,在批量处理多个文件或转换时必须使用,否则处理完一个文件后会等待用户按回车键。 -dNOPAUSE
-dBATCH setbatch 执行完成后退出,通常与 -dNOPAUSE 一起使用,确保脚本在处理完所有文件后自动终止。 -dBATCH
-dQUIET setquiet 静默模式,减少不必要的输出信息,只显示错误。 -dQUIET
-dSAFER setsafer 安全模式,限制文件访问和执行操作,防止恶意 PostScript 代码执行危险命令。强烈建议在生产环境中使用 -dSAFER

分辨率与图像质量控制

这些参数主要用于控制输出图像的尺寸和清晰度。

参数 全称 描述 示例
-r resolution 设置分辨率,单位是 DPI (每英寸点数),同时影响输入的缩放。 -r300 (300 DPI)
-g geometry 设置输出图像的几何尺寸,格式为 宽x高,单位是像素。 -g1920x1080 (输出为1920x1080像素)
-dUseCropBox usecropbox 使用 PDF 的 裁剪框 来定义输出区域,这是最常用的选项。 -dUseCropBox
-dUseBleedBox usebleedbox 使用 PDF 的 出血框 来定义输出区域。 -dUseBleedBox
-dUseMediaBox usemediabox 使用 PDF 的 媒体框 (整个页面) 来定义输出区域。 -dUseMediaBox
-dUseTrimBox usetrimbox 使用 PDF 的 修剪框 来定义输出区域。 -dUseTrimBox

重要提示: -r-g 经常一起使用来精确控制输出,要生成一个 300 DPI 的 A4 页面 PDF 缩略图:

  • A4 尺寸约为 2480 x 3508 像素 (300 DPI)。
  • 命令: gs -sDEVICE=png16m -r300 -g2480x3508 -o a4_thumb.png input.pdf

页面控制

用于处理多页文档中的特定页面。

参数 全称 描述 示例
-dFirstPage firstpage 指定要处理的起始页码 (从 1 开始)。 -dFirstPage=5
-dLastPage lastpage 指定要处理的结束页码 -dLastPage=10
-sPageList pagelist 指定要处理的页面列表,格式为 a-b,c,d-e,比 FirstPage/LastPage 更灵活。 -sPageList=1-5,7,9-11

高级与调试参数

这些参数用于特定场景,如调试、性能优化或特殊功能。

参数 全称 描述 示例
-dDEBUG debug 启用调试输出,会打印大量内部信息,用于排查问题。 -dDEBUG
-sstdout stdout 指定标准输出的重定向路径,Ghostscript 的日志和错误信息会写入此文件。 -sstdout=gs_log.txt
-dNODISPLAY nodisplay 不使用显示设备,在服务器或无头环境中运行时非常有用,强制 Ghostscript 使用非交互式设备。 -dNODISPLAY
-dNOPROMPT noprompt 不显示任何提示,与 -dNODISPLAY 类似,用于自动化脚本。 -dNOPROMPT
-c execute 执行一行 PostScript 代码 -c "quit" (执行 quit 命令)
-f file 从文件读取 PostScript 代码 -f commands.ps

常见用法示例

示例 1:将 PDF 转换为高分辨率 PNG 图片

input.pdf 的第一页转换为 300 DPI 的 PNG 图片。

gs -sDEVICE=png16m \
   -r300 \
   -dFirstPage=1 \
   -dLastPage=1 \
   -o output_page1.png \
   -dNOPAUSE \
   -dBATCH \
   -dSAFER \
   input.pdf

示例 2:将 PDF 的所有页面转换为单独的 JPEG 图片

input.pdf 的每一页都转换成一个 JPEG 文件,文件名依次为 page_01.jpg, page_02.jpg...

gs -sDEVICE=jpeg \
   -r150 \
   -dJPEGQ=90 \
   -o page_%02d.jpg \
   -dNOPAUSE \
   -dBATCH \
   -dSAFER \
   input.pdf

说明:

  • -o page_%02d.jpg 中的 %d 是一个占位符,Ghostscript 会自动替换为页码。%02d 表示页码用两位数字表示(如 01, 02, ...)。
  • -dJPEGQ=90 设置 JPEG 的质量(0-100)。

示例 3:将 PDF 合并为一个 PostScript 文件

file1.psfile2.pdf 合并到 output.ps 中。

gs -sDEVICE=ps2write \
   -o output.ps \
   -dNOPAUSE \
   -dBATCH \
   -dSAFER \
   file1.ps file2.pdf

示例 4:提取 PDF 文本内容

使用 txtwrite 设备将 PDF 的所有文本提取到一个纯文本文件中。

gs -sDEVICE=txtwrite \
   -o output.txt \
   -dNOPAUSE \
   -dBATCH \
   -dSAFER \
   input.pdf

示例 5:只打印 PDF 的特定页面

input.pdf 的第 3, 5, 6 页发送到默认打印机。

gs -sDEVICE=mswinpr2 \
   -sOutputFile="%printer%" \
   -dNOPAUSE \
   -dBATCH \
   -dSAFER \
   -sPageList=3,5-6 \
   input.ps

注意: mswinpr2 是 Windows 平台的打印设备,Linux 上通常是 cupslpr


如何查找所有可用设备?

Ghostscript 支持数十种输出设备,你可以使用以下命令列出当前安装版本支持的所有设备:

gs -h

或者

gs --help

输出结果会很长,你可以使用 grep 来过滤你需要的设备类型,

gs -h | grep -i "device"

或者查找所有图像设备:

gs -h | grep "dev="

掌握 Ghostscript 的关键在于理解 -sDEVICE-o-dNOPAUSE-dBATCH 这几个核心参数,然后根据需求组合使用分辨率 (-r)、尺寸 (-g) 和页面控制 (-dFirstPage) 等参数,对于自动化任务,始终记得加上 -dSAFER 来保证安全性。

-- 展开阅读全文 --
头像
ThinkCentre参数有哪些?性能配置怎么选?
« 上一篇 今天
智能家居行业市场分析
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]