强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

CUPS 打印服务完全指南 / 第 5 章:PPD 文件详解

第 5 章:PPD 文件详解

PPD(PostScript Printer Description)文件是 CUPS 打印系统的核心配置文件之一,它定义了打印机的能力、选项和默认设置。本章将深入解析 PPD 文件的结构和高级自定义方法。


5.1 PPD 文件概述

5.1.1 什么是 PPD 文件

PPD 文件是 Adobe 定义的标准格式,用于描述 PostScript 打印机的能力:

属性说明
全称PostScript Printer Description
格式ASCII 文本文件
扩展名.ppd
标准Adobe PPD Specification 4.3
位置/usr/share/ppd//etc/cups/ppd/
用途定义打印机功能、选项和默认值

5.1.2 PPD 文件位置

# 系统 PPD 文件目录
ls /usr/share/ppd/
# 按制造商组织子目录

# CUPS 安装的打印机 PPD
ls /etc/cups/ppd/

# 查看所有可用 PPD
find /usr/share/ppd -name "*.ppd" | wc -l
# 通常有数千个

# Gutenprint PPD
ls /usr/share/ppd/gutenprint/5.3/

# HP PPD
ls /usr/share/ppd/HP/

# 搜索特定打印机 PPD
find /usr/share/ppd -name "*.ppd" | grep -i "laserjet.*m404"

5.1.3 PPD 版本历史

版本年份主要变化
PPD 4.01994初始版本
PPD 4.11996增加颜色管理
PPD 4.22000增加自定义纸张
PPD 4.32003最终独立版本

注意:PPD 格式已被 PWG(打印工作组)标记为过时,推荐使用 IPP Everywhere。但目前大多数 CUPS 安装仍然依赖 PPD 文件。


5.2 PPD 文件结构

5.2.1 PPD 文件头部

*PPD-Adobe: "4.3"
*% 打印机基本信息
*FormatVersion: "4.3"
*FileVersion: "2.5"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PCFileName: "hpm404.ppd"
*Manufacturer: "HP"
*Product: "(HP LaserJet Pro M404)"
*ModelName: "HP LaserJet Pro M404"
*NickName: "HP LaserJet Pro M404, hpcups 3.22.10"
*ShortNickName: "HP LaserJet Pro M404"
*PSVersion: "(3010.106) 3"
*LanguageLevel: "3"
*ColorDevice: False
*DefaultColorSpace: Gray
*TTRasterizer: Type42
*Resolution: 600

关键字段说明

字段说明示例
*PPD-AdobePPD 版本"4.3"
*Manufacturer制造商"HP"
*ModelName模型名称"HP LaserJet Pro M404"
*NickName显示名称"HP LaserJet Pro M404, hpcups 3.22.10"
*ColorDevice是否彩色True/False
*LanguageLevelPS 语言级别"3"
*Resolution默认分辨率600

5.2.2 选项定义 (OpenUI)

*OpenUI *PageSize/Page Size: PickOne
*DefaultPageSize: A4
*PageSize Letter/Letter: "<</PageSize[612 792]>>setpagedevice"
*PageSize A4/A4: "<</PageSize[595.28 841.89]>>setpagedevice"
*PageSize Legal/Legal: "<</PageSize[612 1008]>>setpagedevice"
*PageSize A3/A3: "<</PageSize[841.89 1190.55]>>setpagedevice"
*CloseUI: *PageSize

常用纸张尺寸

纸张名称宽度 (点)高度 (点)尺寸 (mm)
Letter612792216 × 279
A4595.28841.89210 × 297
Legal6121008216 × 356
A3841.891190.55297 × 420
A5419.53595.28148 × 210
B5498.90708.66176 × 250
Executive522756184 × 267
Env #10297684105 × 241
Env DL311.81623.62110 × 220

5.2.3 分辨率定义

*OpenUI *Resolution/Output Resolution: PickOne
*DefaultResolution: 600dpi
*Resolution 300dpi/300 DPI: "<</HWResolution[300 300]>>setpagedevice"
*Resolution 600dpi/600 DPI: "<</HWResolution[600 600]>>setpagedevice"
*Resolution 1200dpi/1200 DPI: "<</HWResolution[1200 1200]>>setpagedevice"
*CloseUI: *Resolution

5.2.4 双面打印定义

*OpenUI *Duplex/Double-Sided Printing: PickOne
*DefaultDuplex: None
*Duplex None/Off: "<</Duplex false>>setpagedevice"
*Duplex DuplexNoTumble/Long-Edge (Standard): "<</Duplex true/Tumble false>>setpagedevice"
*Duplex DuplexTumble/Short-Edge (Flip): "<</Duplex true/Tumble true>>setpagedevice"
*CloseUI: *Duplex

5.2.5 输入纸盒定义

*OpenUI *InputSlot/Paper Source: PickOne
*DefaultInputSlot: Auto
*InputSlot Auto/Auto-Select: "<</ManualFeed false/MediaPosition 7>>setpagedevice"
*InputSlot Tray1/Tray 1: "<</ManualFeed false/MediaPosition 1>>setpagedevice"
*InputSlot Tray2/Tray 2: "<</ManualFeed false/MediaPosition 4>>setpagedevice"
*InputSlot Manual/Manual Feed: "<</ManualFeed true/MediaPosition 2>>setpagedevice"
*CloseUI: *InputSlot

5.3 自定义 PPD 选项

5.3.1 添加自定义纸张

# 备份原始 PPD 文件
sudo cp /etc/cups/ppd/myprinter.ppd /etc/cups/ppd/myprinter.ppd.backup

# 编辑 PPD 文件
sudo vim /etc/cups/ppd/myprinter.ppd

添加自定义纸张尺寸

*% 添加自定义纸张尺寸 210mm x 1000mm (条幅)
*PageSize Banner/条幅 (210x1000mm): "<</PageSize[595.28 2834.65]>>setpagedevice"
*PageRegion Banner/条幅 (210x1000mm): "<</PageSize[595.28 2834.65]>>setpagedevice"
*ImageableArea Banner/条幅 (210x1000mm): "0 0 595.28 2834.65"
*PaperDimension Banner/条幅 (210x1000mm): "595.28 2834.65"

*% 添加 5x7 英寸照片纸
*PageSize Photo5x7/照片纸 5x7: "<</PageSize[360 504]>>setpagedevice"
*PageRegion Photo5x7/照片纸 5x7: "<</PageSize[360 504]>>setpagedevice"
*ImageableArea Photo5x7/照片纸 5x7: "0 0 360 504"
*PaperDimension Photo5x7/照片纸 5x7: "360 504"

纸张尺寸计算公式

点 (point) = 毫米 × 72 / 25.4

示例:
  A4 (210mm × 297mm) = 595.28 × 841.89 点
  Letter (8.5" × 11") = 612 × 792 点

5.3.2 添加水印选项

# 在 PPD 文件中添加自定义水印选项
sudo vim /etc/cups/ppd/myprinter.ppd
*% 水印选项
*OpenUI *Watermark/Watermark: PickOne
*DefaultWatermark: None
*Watermark None/无水印: ""
*Watermark Confidential/机密: "/cupsWM/conf def /cupsWM true def"
*Watermark Draft/草稿: "/cupsWM/draft def /cupsWM true def"
*Watermark Copy/副本: "/cupsWM/copy def /cupsWM true def"
*Watermark Original/原件: "/cupsWM/original def /cupsWM true def"
*Watermark Top Secret/绝密: "/cupsWM/topsecret def /cupsWM true def"
*CloseUI: *Watermark

*% 水印位置
*OpenUI *WatermarkPosition/Watermark Position: PickOne
*DefaultWatermarkPosition: Center
*WatermarkPosition Center/居中: ""
*WatermarkPosition TopLeft/左上角: ""
*WatermarkPosition TopRight/右上角: ""
*WatermarkPosition BottomLeft/左下角: ""
*WatermarkPosition BottomRight/右下角: ""
*CloseUI: *WatermarkPosition

*% 水印角度
*OpenUI *WatermarkAngle/Watermark Angle: PickOne
*DefaultWatermarkAngle: 45
*WatermarkAngle 0/0度: ""
*WatermarkAngle 45/45度: ""
*WatermarkAngle 90/90度: ""
*WatermarkAngle 315/315度: ""
*CloseUI: *WatermarkAngle

5.3.3 添加打印质量选项

*% 打印质量
*OpenUI *PrintQuality/Print Quality: PickOne
*DefaultPrintQuality: Normal
*PrintQuality Draft/草稿: "<</HWResolution[300 300]>>setpagedevice"
*PrintQuality Normal/普通: "<</HWResolution[600 600]>>setpagedevice"
*PrintQuality High/高: "<</HWResolution[1200 1200]>>setpagedevice"
*PrintQuality Best/最佳: "<</HWResolution[1200 1200]>>setpagedevice"
*CloseUI: *PrintQuality

5.3.4 添加颜色选项

*% 颜色模式
*OpenUI *ColorModel/Color Mode: PickOne
*DefaultColorModel: Gray
*ColorModel Gray/Grayscale: "<</cupsColorSpace 3/cupsBitsPerColor 8>>setpagedevice"
*ColorModel RGB/Color: "<</cupsColorSpace 1/cupsBitsPerColor 8>>setpagedevice"
*ColorModel CMYK/CMYK: "<</cupsColorSpace 6/cupsBitsPerColor 8>>setpagedevice"
*CloseUI: *ColorModel

*% 色调调节
*OpenUI *Hue/Hue Adjustment: PickOne
*DefaultHue: 0
*Hue -100/-100: ""
*Hue -50/-50: ""
*Hue 0/0: ""
*Hue 50/+50: ""
*Hue 100/+100: ""
*CloseUI: *Hue

*% 饱和度
*OpenUI *Saturation/Saturation: PickOne
*DefaultSaturation: 0
*Saturation -100/-100: ""
*Saturation 0/0: ""
*Saturation 100/+100: ""
*CloseUI: *Saturation

5.3.5 添加每页多版选项

*% 每页多版 (N-up)
*OpenUI *NumberUp/Pages Per Sheet: PickOne
*DefaultNumberUp: 1
*NumberUp 1/1 Page Per Sheet: ""
*NumberUp 2/2 Pages Per Sheet: ""
*NumberUp 4/4 Pages Per Sheet: ""
*NumberUp 6/6 Pages Per Sheet: ""
*NumberUp 9/9 Pages Per Sheet: ""
*NumberUp 16/16 Pages Per Sheet: ""
*CloseUI: *NumberUp

*% 布局
*OpenUI *NumberUpLayout/N-Up Layout: PickOne
*DefaultNumberUpLayout: Lrtb
*NumberUpLayout Lrtb/Left to Right, Top to Bottom: ""
*NumberUpLayout Lrbt/Left to Right, Bottom to Top: ""
*NumberUpLayout Rltb/Right to Left, Top to Bottom: ""
*NumberUpLayout Rlbt/Right to Left, Bottom to Top: ""
*NumberUpLayout Tblr/Top to Bottom, Left to Right: ""
*NumberUpLayout Tbrl/Top to Bottom, Right to Left: ""
*CloseUI: *NumberUpLayout

5.4 PPD 常用选项参考

5.4.1 纸张相关选项

# 使用选项打印
lp -d myprinter \
  -o media=A4 \
  -o media=Letter \
  -o media=A3 \
  document.pdf

# 自定义纸张尺寸(单位:点)
lp -d myprinter -o media=Custom.210x400mm document.pdf
lp -d myprinter -o media=Custom.5x7in document.pdf

5.4.2 双面打印选项

# 双面打印
lp -d myprinter -o sides=one-sided document.pdf           # 单面
lp -d myprinter -o sides=two-sided-long-edge document.pdf  # 双面(长边翻转)
lp -d myprinter -o sides=two-sided-short-edge document.pdf # 双面(短边翻转)

# 使用 PPD 选项名
lp -d myprinter -o Duplex=DuplexNoTumble document.pdf
lp -d myprinter -o Duplex=DuplexTumble document.pdf
lp -d myprinter -o Duplex=None document.pdf

双面打印翻转方向说明

长边翻转 (Long-Edge / Standard):
  ┌─────────┐    ┌─────────┐
  │ Page 1  │    │ Page 2  │
  │         │    │         │
  │   正面  │翻转│   背面  │
  │         │←──│         │
  └─────────┘    └─────────┘
  (像书本一样翻页)

短边翻转 (Short-Edge / Flip):
  ┌─────────┐    ┌─────────┐
  │ Page 1  │翻转│ Page 2  │
  │         │↑──│         │
  │   正面  │    │   背面  │
  │         │    │         │
  └─────────┘    └─────────┘
  (像日历一样翻页)

5.4.3 方向选项

# 纵向打印(默认)
lp -d myprinter -o orientation-requested=3 document.pdf

# 横向打印
lp -d myprinter -o orientation-requested=4 document.pdf

# 反向纵向(旋转 180°)
lp -d myprinter -o orientation-requested=5 document.pdf

# 反向横向
lp -d myprinter -o orientation-requested=6 document.pdf

# 简写
lp -d myprinter -o portrait document.pdf   # 纵向
lp -d myprinter -o landscape document.pdf  # 横向

5.4.4 页面范围选项

# 打印全部
lp -d myprinter -o page-ranges=all document.pdf

# 打印指定页
lp -d myprinter -o page-ranges=1-5 document.pdf
lp -d myprinter -o page-ranges=1,3,5,7 document.pdf
lp -d myprinter -o page-ranges=2- document.pdf   # 从第 2 页到最后
lp -d myprinter -o page-ranges=-10 document.pdf   # 到第 10 页

# 奇偶页
lp -d myprinter -o page-set=odd document.pdf   # 奇数页
lp -d myprinter -o page-set=even document.pdf  # 偶数页

5.4.5 纸盒选择

# 自动选择纸盒
lp -d myprinter -o InputSlot=Auto document.pdf

# 使用纸盒 1
lp -d myprinter -o InputSlot=Tray1 document.pdf

# 使用纸盒 2
lp -d myprinter -o InputSlot=Tray2 document.pdf

# 手动送纸
lp -d myprinter -o InputSlot=Manual document.pdf

5.4.6 媒体类型

# 普通纸
lp -d myprinter -o MediaType=Plain document.pdf

# 厚纸
lp -d myprinter -o MediaType=CardStock document.pdf

# 信封
lp -d myprinter -o MediaType=Envelope envelope.pdf

# 透明胶片
lp -d myprinter -o MediaType=Transparency document.pdf

# 照片纸
lp -d myprinter -o MediaType=Photo photo.jpg

# 标签纸
lp -d myprinter -o MediaType=Labels labels.pdf

5.5 使用 ppdc 编译 PPD 文件

5.5.1 PPD 编译器简介

# ppdc 是 CUPS 的 PPD 编译器
# 可以从 .drv 文件生成 .ppd 文件

# 查看 ppdc 帮助
ppdc --help

# 编译 .drv 文件为 .ppd
ppdc -d /tmp/ppds myprinter.drv

# 反编译 PPD 文件(提取选项)
ppdhtml myprinter.ppd > myprinter.html
ppdi -I myprinter myprinter.ppd -o myprinter.drv

5.5.2 驱动信息文件 (.drv)

# 创建 .drv 文件
cat << 'EOF' > /tmp/myprinter.drv
# My Printer Driver

Manufacturer "MyBrand"

ModelName "My Printer 1000"
NickName "My Printer 1000, CUPS driver"
PCFileName "myprinter1000.ppd"

% Resolution options
HWMargins 9 36 9 9
*Resolution k 0 0 0 0 "300dpi/300 DPI - Draft": ""
*Resolution k 0 0 0 0 "600dpi/600 DPI - Normal": ""
*Resolution k 0 0 0 0 "1200dpi/1200 DPI - High": ""

% Paper sizes
*PageSize Letter/US Letter:    "<< /PageSize [612 792] >> setpagedevice"
*PageSize A4/A4:               "<< /PageSize [595 842] >> setpagedevice"
*PageSize Legal/US Legal:      "<< /PageSize [612 1008] >> setpagedevice"

*PageRegion Letter/US Letter:  "<< /PageSize [612 792] >> setpagedevice"
*PageRegion A4/A4:             "<< /PageSize [595 842] >> setpagedevice"
*PageRegion Legal/US Legal:    "<< /PageSize [612 1008] >> setpagedevice"

*ImageableArea Letter/US Letter:  "18 36 594 756"
*ImageableArea A4/A4:             "18 36 577 806"
*ImageableArea Legal/US Legal:    "18 36 594 972"

*PaperDimension Letter/US Letter: "612 792"
*PaperDimension A4/A4:           "595 842"
*PaperDimension Legal/US Legal:  "612 1008"

% Duplex
*OpenUI *Duplex/Duplex: PickOne
*DefaultDuplex: None
*Duplex None/Off:             "<< /Duplex false >> setpagedevice"
*Duplex DuplexNoTumble/Long Edge:  "<< /Duplex true /Tumble false >> setpagedevice"
*Duplex DuplexTumble/Short Edge:   "<< /Duplex true /Tumble true >> setpagedevice"
*CloseUI: *Duplex
EOF

# 编译生成 PPD 文件
ppdc -d /tmp/ppds /tmp/myprinter.drv

# 查看生成的 PPD 文件
ls /tmp/ppds/
cat /tmp/ppds/myprinter1000.ppd

5.5.3 PPD 文件合并

# 合并两个 PPD 文件的选项
# 使用 ppdi 导入选项
ppdi -o combined.drv file1.ppd
ppdi -I model2 file2.ppd -o combined.drv

# 编译合并后的文件
ppdc -d /tmp/merged combined.drv

5.6 PPD 文件验证

5.6.1 验证 PPD 文件

# 使用 cupsfilter 验证 PPD 文件
sudo cupsfilter -m application/vnd.cups-postscript \
  -p myprinter.ppd /dev/null 2>&1

# 使用 cupstestppd 验证(CUPS 2.x)
# 注意:某些版本可能没有此命令
cupstestppd /etc/cups/ppd/myprinter.ppd

# 使用 ppdpo 检查 PPD 选项
ppdpo -o /tmp/options.txt /etc/cups/ppd/myprinter.ppd

# 检查 PPD 文件语法
grep -c "^\*" /etc/cups/ppd/myprinter.ppd
# 统计 PPD 指令数量

5.6.2 常见 PPD 错误

# 错误 1: 缺少必需字段
# PPD 文件必须包含以下字段:
# *PPD-Adobe
# *FormatVersion
# *NickName
# *PageSize (至少一个)

# 错误 2: 无效的 PostScript 代码
# 确保所有 setpagedevice 命令正确闭合

# 错误 3: 编码问题
# PPD 文件应使用 ISO-8859-1 编码
file myprinter.ppd
# 应显示: ISO-8859-1 或 ASCII

# 错误 4: 选项冲突
# 检查 Default* 值是否与对应的选项定义一致
grep "Default" myprinter.ppd

5.7 高级 PPD 配置

5.7.1 安装自定义 PPD 文件

# 将自定义 PPD 文件复制到 CUPS 目录
sudo cp myprinter.ppd /usr/share/ppd/custom/

# 或复制到打印机特定目录
sudo cp myprinter.ppd /etc/cups/ppd/

# 使用自定义 PPD 添加打印机
sudo lpadmin -p CustomPrinter -E \
  -v socket://192.168.1.100:9100 \
  -P /usr/share/ppd/custom/myprinter.ppd

# 替换现有打印机的 PPD
sudo lpadmin -p myprinter -P /path/to/new.ppd

5.7.2 使用 cupsfilter 转换文档

# 使用指定 PPD 转换文档为 PostScript
cupsfilter -p myprinter.ppd -m application/postscript document.pdf > output.ps

# 使用指定打印机转换文档
cupsfilter -d myprinter -m application/postscript document.pdf > output.ps

# 转换为光栅数据
cupsfilter -d myprinter -m application/vnd.cups-raster document.pdf > output.raster

5.7.3 PPD 文件中的自定义命令

*% 在作业开始和结束时执行的 PostScript 命令
*% 设置作业分隔页
*JCLBegin "<1B>%-12345X@PJL JOB<0A>"
*JCLEnd "<1B>%-12345X@PJL EOJ<0A>"
*JCLToPDFInterpreter ""

*% 自定义页面设置命令
*CustomPageSize True: "pop pop pop << /PageSize [5 -2 roll] /ImagingBBox null >> setpagedevice"
*ParamCustomPageSize Width: 1 points 36 1224
*ParamCustomPageSize Height: 2 points 36 1224
*ParamCustomPageSize Orientation: 3 int 0 0

5.8 业务场景

5.8.1 场景一:企业信头纸配置

# 需求:配置专用信头纸纸盒
# 步骤 1: 在 PPD 中添加信头纸类型
sudo vim /etc/cups/ppd/myprinter.ppd

# 添加以下内容
# *OpenUI *MediaType/Media Type: PickOne
# *DefaultMediaType: Plain
# *MediaType Plain/普通纸: "<</MediaType(Plain)>>setpagedevice"
# *MediaType Letterhead/信头纸: "<</MediaType(Letterhead)>>setpagedevice"
# *MediaType Preprinted/预印纸: "<</MediaType(Preprinted)>>setpagedevice"
# *CloseUI: *MediaType

# 步骤 2: 使用信头纸打印
lp -d myprinter -o MediaType=Letterhead -o InputSlot=Tray2 report.pdf

# 步骤 3: 创建打印脚本
cat << 'SCRIPT' > ~/print-letterhead.sh
#!/bin/bash
lp -d myprinter -o MediaType=Letterhead -o InputSlot=Tray2 \
  -o sides=one-sided "$@"
SCRIPT
chmod +x ~/print-letterhead.sh

5.8.2 场景二:标签打印配置

# 需求:配置标签打印机
# 创建标签尺寸 PPD

# 编辑 PPD 文件
sudo vim /etc/cups/ppd/label-printer.ppd

# 添加自定义标签尺寸
# *% 标签尺寸定义
# *PageSize Label4x6/标签 4x6: "<</PageSize[288 432]>>setpagedevice"
# *PageRegion Label4x6/标签 4x6: "<</PageSize[288 432]>>setpagedevice"
# *ImageableArea Label4x6/标签 4x6: "0 0 288 432"
# *PaperDimension Label4x6/标签 4x6: "288 432"

# *PageSize Label2x4/标签 2x4: "<</PageSize[144 288]>>setpagedevice"
# *PageRegion Label2x4/标签 2x4: "<</PageSize[144 288]>>setpagedevice"
# *ImageableArea Label2x4/标签 2x4: "0 0 144 288"
# *PaperDimension Label2x4/标签 2x4: "144 288"

# 打印标签
lp -d label-printer -o media=Label4x6 shipping-label.pdf

5.8.3 场景三:批量打印优化

# 需求:大批量打印优化配置
# 创建优化的 PPD 选项

# 使用草稿模式快速打印
lp -d myprinter -o Resolution=300dpi -o ColorModel=Gray large-document.pdf

# 使用每页多版节省纸张
lp -d myprinter -o number-up=4 -o sides=two-sided-long-edge document.pdf

# 创建优化脚本
cat << 'SCRIPT' > ~/print-eco.sh
#!/bin/bash
# 环保打印模式:草稿、双面、每页 2 版
lp -d myprinter \
  -o Resolution=300dpi \
  -o ColorModel=Gray \
  -o sides=two-sided-long-edge \
  -o number-up=2 \
  "$@"
SCRIPT
chmod +x ~/print-eco.sh

5.9 扩展阅读

资源链接
Adobe PPD 规范https://www.adobe.com/content/dam/acom/en/devnet/actionscript/articles/5001.PPD_Spec_v4.3.pdf
CUPS PPD 参考https://www.cups.org/doc/spec-ppd.html
OpenPrinting PPDhttps://www.openprinting.org/ppd-o-matic.php
PPD 编译器手册man ppdc

5.10 本章小结

主题关键要点
PPD 文件定义打印机能力和选项的文本配置文件
文件结构头部信息 + 选项定义(纸张、分辨率、双面等)
自定义选项可添加水印、自定义纸张、特殊介质等
常用选项media(纸张)、sides(双面)、Resolution(分辨率)
ppdcPPD 编译器,用于从 .drv 文件生成 PPD
验证使用 cupstestppd 验证 PPD 文件语法

下一章预告:我们将深入学习 IPP 协议,包括 IPP Everywhere、AirPrint 以及移动打印和远程打印配置。


5.11 练习题

  1. 结构题:分析一个 PPD 文件,识别其中定义的所有选项类型。

  2. 自定义题:创建一个包含自定义纸张尺寸(210mm × 500mm)的 PPD 文件。

  3. 双面题:配置打印机默认双面打印,并解释长边翻转和短边翻转的区别。

  4. 编译题:使用 ppdc 从 .drv 文件编译生成 PPD 文件。

  5. 场景题:为企业配置一个包含普通纸、信头纸和标签纸三种介质类型的打印机 PPD 文件。