Printer 是一个专为 Linux 系统设计的命令行打印工具,基于 CUPS(Common Unix Printing System)架构开发,能够无缝对接任何支持 PPD 的打印机。该工具的核心价值在于其自动化配置能力——它会在运行时动态读取目标打印机的 PPD(PostScript Printer Description)文件,自动识别纸张尺寸、边距、分辨率和双面打印等关键设置,无需用户手动调整复杂参数。无论是处理 PDF 文档还是图像文件(如 PNG、JPG、GIF、BMP、TIFF、WebP),Printer 都能智能适配打印机的原生输出规格,确保输出质量与物理打印效果一致。工具通过简洁的命令行接口提供统一的操作入口,支持 JSON 格式输出以适配自动化脚本场景,极大提升了开发者和系统管理员在批量打印或集成打印功能时的效率。
核心功能特点
- 自动从 PPD 文件中读取并应用打印机支持的纸张尺寸、边距、分辨率和双面打印设置
- 支持多种文件格式打印:PDF 直接发送,图像文件(PNG/JPG/GIF/BMP/TIFF/WebP)自动转换为打印机原生 DPI 的 PDF 后居中打印
- 灵活指定打印机及自定义 CUPS 选项,包括输入托盘选择、打印质量、介质类型和单双面模式
- 提供 list、print、info、options 四个核心命令,均支持 –json 参数输出结构化数据
- 遵循符号链接解析路径,但要求最终文件位于工作区或 /tmp 目录内以确保安全性
适用场景
Printer 工具特别适合需要在无图形界面的服务器环境或远程终端中执行自动化打印任务的场景。例如,在 CI/CD 流水线中生成测试报告后自动发送至指定打印机;或在运维监控系统中将日志快照、性能图表等图像内容批量打印归档。由于其完全依赖命令行操作且支持 JSON 输出,它可被轻松集成到 shell 脚本、Python 程序或其他自动化框架中,实现“打印即服务”的轻量级解决方案。对于需要频繁切换不同打印机型号或纸张类型的办公环境,Printer 的动态 PPD 加载机制避免了每次更换设备时重新配置参数的繁琐流程。此外,在处理信封、标签卡纸等特殊介质时,利用 `-o media=SIZE,TRAY,TYPE` 语法可精准控制进纸通道与介质类型,解决了部分 PPD 驱动对 InputSlot 指令支持不完善的问题。整体而言,该工具填补了标准 CUPS 命令行工具在易用性与自动化方面的重要空白,成为 Linux 环境下高效、可靠打印任务的首选方案。
