如何将macOS系统lpr命令的输出重定向为PDF文件而非发送到打印机
macOS原生导出lpr等价效果PDF的方案
核心方法是调用macOS系统原生预装的CUPS组件提供的cupsfilter工具,该工具的文本处理逻辑和lpr命令完全一致,生成的PDF格式、Menlo字体渲染效果和直接用lpr打印的输出没有区别,不需要安装任何第三方工具,可直接嵌入应用分发。
具体使用方法
- 基础命令(生成和默认
lpr打印效果一致的PDF):
cupsfilter -m application/pdf 输入文本文件路径 > 输出PDF文件路径
示例:要将当前目录下的demo.txt生成output.pdf,执行:cupsfilter -m application/pdf demo.txt > output.pdf
- 如果需要完全复刻指定打印机的
lpr打印参数效果,可以指定打印机名称:
- 先执行
lpstat -p查询系统已配置的打印机列表,获取目标打印机的名称 - 执行命令:
cupsfilter -m application/pdf -d 目标打印机名称 输入文本文件路径 > 输出PDF文件路径
原理解释
你之前直接将lpr输出管道给pstopdf无效的原因是:lpr默认会将处理后的打印作业直接提交给CUPS调度队列发送到打印机,不会将中间生成的PostScript内容输出到标准输出,因此无法直接通过管道捕获。cupsfilter直接调用了和lpr完全相同的CUPS文本过滤链路,跳过了提交打印队列的步骤,直接将处理后的内容输出为PDF格式,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者emendelson
相关产品推荐
相关产品推荐

