为什么应用程序不尊重打印机的默认选项?

art*_*bot 6 gnome printing evince 12.04

CUPS一直为打印队列提供一组可配置的“默认选项”。

system-config-printer也可以编辑这些。

但是应用程序(见下文)似乎完全忽略了这些!我敢肯定(我已经使用 Debian/Ubuntu 10 年了)他们并没有忽略它们。

是不是某处有问题?或者我在某处出错的配置选项?或修复/解决方法?

我注意到如果我创建一个新用户,默认值在那里。因此,某处必须有用户设置 - 但在哪里?!

规格

我知道问这样的问题没有具体细节是没有意义的,所以你开始吧:

  • 不尊重默认设置的应用程序:Firefox、DigiKam、EOG(“图像查看器”)、LibreOffice 3、Thunderbird、Evince(“文档查看器”)。我还没有找到一个尊重默认值的应用程序。

  • 环境:带有 Gnome Shell 的 Ubuntu 12.04 LTS。

  • 打印机驱动程序(库存,来自 Ubuntu):“HP Photosmart 7510 系列,hpcups 3.12.2”

  • 一个具体的例子是默认选项说:双面、“最佳”质量、“普通纸”,但应用程序都默认为非双面、“高分辨率照片”质量、“照片纸”。这意味着每张纸需要 10 分钟,而且墨水成本很高!

Gil*_*il' 5

摘要:您可能会在~/.cups/lpoptions.


有系统范围的默认值和每个用户的默认值。

system-config-printer应用程序和CUPS Web界面配置系统范围的默认值。它们存储在其中/etc/cups/printers.conf,其中NAME是打印机的名称。在文件中,选项设置行如下所示:/etc/cups/ppd/NAME.ppd.ppd

*DefaultDuplex: DuplexNoTumble
Run Code Online (Sandbox Code Playgroud)

此选项的可能值称为Duplex,由类似的行给出

*Duplex None/Off: …
*Duplex DuplexNoTumble/Long-Edge Binding: …
*Duplex DuplexTumble/Short-Edge Binding: …
Run Code Online (Sandbox Code Playgroud)

冒号后面的部分描述了发送到打印机以激活设置的命令。冒号前的部分由 a *,然后是选项名称,然后是空格,然后是一个或多个以斜杠分隔的值的名称(例如,“None”和“Off”对于此特定选项的含义相同,您可以互换使用它们)。

您还可以将每个用户的默认值存储.cups/lpoptions在您的主目录中调用的文件中。该文件的语法如下所示:

Dest lj/single Duplex=None
Default lj Duplex=DuplexNoTumble
Run Code Online (Sandbox Code Playgroud)

一行 likeDest lj/single …定义了一个名为的打印机实例。打印到该实例时,该选项设置为。打印到默认实例时,该选项设置为(即双面)。该行定义了打印到. 这些选项覆盖系统范围的默认值。使用而不是使默认打印目的地。singleljDuplexNoneDuplexDuplexNoTumbleDefault lj …ljDefaultDestlj

(你也可以有一个全系统的/etc/cups/lpoptions,为什么有一个系统范围的文件,这似乎与中设置的选项冗余.ppd文件?不同的是,如果您的计算机充当其它计算机的打印服务器,该.ppd文件适用于全部,而/etc/cups/lpoptions仅适用于从本地计算机打印时。)

您可以使用实例在命令行中以昵称提供不同的选项集。例如,对于lpoptions上面的文件,lp -d lj双面lp -d lj/single打印和单面打印。实例在某些 GUI 中也是可见的,例如在 KDE 打印对话框中。

Gnome 打印对话框不会显示不同的实例,您只会得到一个。然而,与直觉相反的是,Gnome 没有默认为 plain 的选项lp,而是选择lpoptions文件中提到的最后一个实例。例如,对于lpoptions上面的文件,默认为双面打印,但如果交换两行,则默认为单面打印。

Gnome 的另一个陷阱是它还会读取文件~/.lpoptions。这是 的旧位置~/.cups/lpoptions,自 Ubuntu 12.04 或左右版本以来,打印系统不再读取该位置,但从 Ubuntu 14.04 开始,Gnome 仍会读取该位置。如果您有,.cups/lpoptions请将其重命名为或删除。