You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用lp -o raw打印PostScript文件出现结果不一致的问题

分析与解答

1. Raw模式下双面/单面打印差异的可能原因

首先要明确:-o raw 模式的核心是让CUPS不转换文件内容,直接将PostScript文件发送给打印机,但这并不意味着CUPS完全不处理作业的其他配置——尤其是打印机的默认设置可能会影响最终输出。

可能的诱因包括:

  • CUPS版本差异:从2.2.0升级到2.2.5后,CUPS对raw作业的处理逻辑有细微调整。旧版本可能会强制忽略打印机的默认双面设置,而新版本更尊重打印机PPD文件中的默认配置。如果那三台异常机器的打印机默认设置是“双面打印”,而你的PS文件本身没有明确指定单面打印的PostScript指令,打印机就会用默认设置输出。
  • PPD文件变化:升级macOS时,系统可能自动更新了打印机的PPD(PostScript Printer Description)文件。新的PPD可能将双面打印设为默认值,而旧版本PPD是单面。即使使用-o raw,打印机仍会遵循自身的默认打印模式(除非PS文件里有明确的<< /Duplex false >> setpagedevice这类指令)。
  • 升级后的配置残留:从El Capitan升级到Sierra时,打印机的配置可能没有被完全重置,保留了之前的双面打印默认值,而你在2.2.0的机器上可能手动设置过单面默认。

你可以尝试在异常机器上,手动添加强制单面的参数来验证:

lp -o raw -o sides=one-sided -n 2 27116_6-pack_Pixel_inlay-duplo.ps

如果生效,说明问题确实出在打印机的默认双面设置上。

2. 打印任务名称差异的原因

异常任务显示原PDF文件名,大概率是因为你的PostScript文件中包含了原PDF的元数据。新版本CUPS(2.2.5)会解析PS文件中的Title字段(这个字段通常来自原PDF的文档名称)作为任务名称;而旧版本(2.2.0)可能直接使用PS文件的文件名作为任务名称。

你可以用文本编辑器打开PS文件,搜索/Title关键字,应该能找到类似/Title (原PDF文件名)的条目——这就是CUPS读取任务名称的来源。

3. -n参数在Raw模式下生效的原因

这其实是对-o raw模式的误解:raw模式只是让CUPS不修改文件的内容,但作业的控制参数(比如打印份数-n、优先级、纸张大小等)仍然由CUPS负责处理。

具体来说,CUPS会根据-n参数,要么:

  • 将raw文件重复发送n次给打印机;
  • 或者向打印机发送一次raw文件,同时发送硬件层面的“打印n份”指令(取决于打印机是否支持该功能)。

这两种方式都不会修改你的PS文件内容,只是控制作业的执行次数,所以-n参数在raw模式下完全可以正常生效——这和“raw模式不修改文件内容”的核心逻辑并不冲突。


内容的提问来源于stack exchange,提问作者Paul Verschoor

火山引擎 最新活动