为什么 macOS 系统打印速度比 Chrome 或 lpr 快?
Why is macOS system printing quicker than Chrome or lpr?
我注意到用完全相同的打印机打印完全相同的 pdf 文件并不总是需要相同的时间:
- 从 macOS 预览的默认打印对话框打印非常快。
- 从 Chrome 浏览器的内置打印对话框打印速度较慢。打印机在开始打印作业后暂停片刻。
- 使用
lpr
从命令行打印与从 Chrome 的内置打印对话框打印效果相同。
- 但是,使用 Chrome 切换到系统打印对话框可以再次加快速度。
我的目标是使使用 lpr
从命令行打印与从系统对话框打印一样流畅。究竟是什么造成了不同?
lpr -o landscape /path/to/my/file.pdf
是我当前的命令。生成的输出符合预期,只是太慢了。
从下面的评论中提取的解决方案:
In my case, I looked at lpoptions -p printerName -l
to see all the options and discovered that one of the defaults didn't match my setup. Fixed it with -o paramName=paramValue
in my command and it printed smoothly as ever.
原回答:
如果您还没有,请尝试以下操作:
- 为您使用的
lpr
命令指定 -H immediate
,以覆盖 CUPS 队列本身可能发生的任何调度。
- 尝试指定
-d $printername
参数来覆盖关于使用哪台打印机的任何决定。
lp
的联机帮助页给了我们一些关于可能发生的事情的提示:
CUPS provides many ways to set the default destination. The LPDEST and PRINTER environment variables are consulted first. If neither are set, the current default set using the lpoptions(1) command is used, followed by the default set using the lpadmin(8) command.
来自 lpoptions
联机帮助页:
~/.cups/lpoptions - user defaults and instances created by non-root users.
/etc/cups/lpoptions - system-wide defaults and instances created by the root user.
这些位置中的任何一个都可能包含设置,因此请检查您那里没有任何意外的配置。
回复:目的地选择:
通过使用上述任何方法指定默认目的地,可能会稍微加快目的地的选择。声明一个默认目的地,然后在调用 lp
或 lpr
时使用 -d
选择该命名目的地似乎是最简单的方法,但 ENV 变量也非常方便。
您还应该使用 lpoptions
来验证打印机的选项,如果有任何设置低于最佳值。在此处匹配您在 "normal" OSX 打印机设置中使用的选项应该会导致两种打印方法以完全相同的速度运行。
如果这不能解决您的问题,下一步将是找出您的打印机打印速度最快的原始文件格式 - 然后尝试通过在命令行上进行转换来模拟这一点,并将转换后的文件传递给改为将文件发送到打印机(注意:lp
和 lpr
都支持使用 STDIN 作为输入)。在所有条件相同的情况下,您的计算机在转换时可能比您使用的打印机或打印服务器快得多,并且预览可能使用类似的技巧,例如打印原始文件而不是实际传递 PDF 文件。
我注意到用完全相同的打印机打印完全相同的 pdf 文件并不总是需要相同的时间:
- 从 macOS 预览的默认打印对话框打印非常快。
- 从 Chrome 浏览器的内置打印对话框打印速度较慢。打印机在开始打印作业后暂停片刻。
- 使用
lpr
从命令行打印与从 Chrome 的内置打印对话框打印效果相同。 - 但是,使用 Chrome 切换到系统打印对话框可以再次加快速度。
我的目标是使使用 lpr
从命令行打印与从系统对话框打印一样流畅。究竟是什么造成了不同?
lpr -o landscape /path/to/my/file.pdf
是我当前的命令。生成的输出符合预期,只是太慢了。
从下面的评论中提取的解决方案:
In my case, I looked at
lpoptions -p printerName -l
to see all the options and discovered that one of the defaults didn't match my setup. Fixed it with-o paramName=paramValue
in my command and it printed smoothly as ever.
原回答:
如果您还没有,请尝试以下操作:
- 为您使用的
lpr
命令指定-H immediate
,以覆盖 CUPS 队列本身可能发生的任何调度。 - 尝试指定
-d $printername
参数来覆盖关于使用哪台打印机的任何决定。
lp
的联机帮助页给了我们一些关于可能发生的事情的提示:
CUPS provides many ways to set the default destination. The LPDEST and PRINTER environment variables are consulted first. If neither are set, the current default set using the lpoptions(1) command is used, followed by the default set using the lpadmin(8) command.
来自 lpoptions
联机帮助页:
~/.cups/lpoptions - user defaults and instances created by non-root users.
/etc/cups/lpoptions - system-wide defaults and instances created by the root user.
这些位置中的任何一个都可能包含设置,因此请检查您那里没有任何意外的配置。
回复:目的地选择:
通过使用上述任何方法指定默认目的地,可能会稍微加快目的地的选择。声明一个默认目的地,然后在调用 lp
或 lpr
时使用 -d
选择该命名目的地似乎是最简单的方法,但 ENV 变量也非常方便。
您还应该使用 lpoptions
来验证打印机的选项,如果有任何设置低于最佳值。在此处匹配您在 "normal" OSX 打印机设置中使用的选项应该会导致两种打印方法以完全相同的速度运行。
如果这不能解决您的问题,下一步将是找出您的打印机打印速度最快的原始文件格式 - 然后尝试通过在命令行上进行转换来模拟这一点,并将转换后的文件传递给改为将文件发送到打印机(注意:lp
和 lpr
都支持使用 STDIN 作为输入)。在所有条件相同的情况下,您的计算机在转换时可能比您使用的打印机或打印服务器快得多,并且预览可能使用类似的技巧,例如打印原始文件而不是实际传递 PDF 文件。