YaST Printer
本文适用于 Linux 下 CUPS 版本高达 2.x,以及那里的传统过滤系统和后端。
如今的无驱动程序打印工作流程则大不相同。
关于
YaST 打印机模块是 YaST 的一部分,用于在 openSUSE 中安装和配置打印机。YaST 打印机模块可以在 YaST 控制中心中的 硬件 -> 打印机 下找到。
如果您没有可用的图形界面,也可以在文本模式下使用 YaST 并配置相同的功能,尤其是在通过慢速纯文本连接从远程登录时。
自 openSUSE 11.1 起,YaST 打印机模块被完全重新设计,请参阅 。其中请特别注意“基本设计理念”和“基本实施原则”部分。
特性
- 设置直接连接的打印机(通常是 USB 打印机)
- 设置网络打印机(具有内置网络接口的打印机)
- 配置如何在网络中打印(也包括非 Linux 系统)
- 安装 openSUSE 打印机驱动程序软件包
打印基础
打印设备不直接被用户应用程序程序使用,而是通过打印队列使用。当各种应用程序程序同时提交打印作业时,这些作业被放入队列中,并逐个发送到打印设备。
通用 Unix 打印系统 (CUPS) 是用户和打印机之间的服务器。应用程序程序将它们的打印输出发送到 CUPS,CUPS 将打印作业排队并逐个处理它们。
对于每个打印作业,CUPS 运行打印机驱动程序并将打印机驱动程序的输出发送到打印设备。打印机驱动程序生成最终的特定于打印机的的数据,从而使打印机能够打印。
为此,CUPS 必须知道哪个打印机驱动程序属于打印设备以及打印设备如何连接到计算机,以便 CUPS 可以将打印数据发送到打印设备。
因此,“设置打印机”意味着“设置打印队列”并告诉 CUPS 针对特定队列
- 打印设备如何连接到计算机。
- 哪个打印机驱动程序属于打印设备。
请参阅 Concepts printing 以获取有关打印基础知识的更多信息。
打印要求
- 打印机必须受 openSUSE 支持,请参阅 SDB:Installing a Printer
- 检查打印机是否已正确连接到计算机,并且已通电。
- 最小的 openSUSE 系统安装不包括必要的打印软件包。确保使用 YaST 软件管理 模块安装 CUPS 和其余的打印系统。特别是对于 openSUSE Leap,请确保也安装了“cups-filters”RPM 软件包,因为“cups-filters”是处理 PDF 打印作业所必需的,请参阅 Concepts printing 中的“PDF:最新的打印数据格式”以及各种发行说明中的“打印系统:改进和不兼容的更改”部分,例如:
- 对于 SUSE Linux Enterprise 12,请参阅 https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/
- 对于 openSUSE Leap 42.1,请参阅 https://doc.opensuse.net.cn/release-notes/x86_64/openSUSE/Leap/42.1/
- 对于 openSUSE Leap 42.2,请参阅 https://doc.opensuse.net.cn/release-notes/x86_64/openSUSE/Leap/42.2/
自动打印机配置
直到 openSUSE 13.2,YaST 打印机模块在 openSUSE 系统安装时运行。此时,YaST 打印机模块尝试以自动方式设置打印机。自 openSUSE Leap 起,YaST 打印机模块不应在 openSUSE 系统安装时自动运行。自 openSUSE 11.4 起,自动打印机配置也可以通过运行系统中的 YaST 打印机模块中的“自动配置”触发。对于每个自动检测到的本地连接的打印机,YaST 会测试是否已经存在配置。如果还没有配置,YaST 会尝试为打印机找到匹配的驱动程序,如果找到一个,则会配置打印机。生成的配置基本上与在“添加新打印机配置”对话框中选择一个自动检测到的打印机并接受所有预选值相同(如下所示)。
直接连接的打印机可能会被其他软件和/或打印机设置工具完全自动配置。
有两个其他软件包实现了在将 USB 打印机连接到系统以及从系统断开连接时,无需任何用户操作即可完全自动化的打印机设置。
- 直到 openSUSE 11.1,有软件包 cups-autoconfig,它不是 CUPS 的一部分,而是用于为 CUPS 配置自动检测到的 USB 打印机的独立工具。
- 自 openSUSE 11.2 起,cups-autoconfig 被 udev-configure-printer 替换,其中通过“70-printers.rules”文件中的 udev 规则实现完全自动化的 USB 打印机设置。
完全自动化的打印机设置取决于安装了哪些软件包。如果不需要完全自动化的打印机设置,则应删除相应的软件包。
有各种打印机设置工具。
- YaST 打印机模块
- Gnome 打印机设置工具 (system-config-printer)
- KDE 打印机设置工具
- CUPS Web 前端 (https://:631/admin)
- CUPS 命令行工具 (lpadmin 和 lpinfo)
- 惠普的 HPLIP 驱动程序设置工具“hp-setup”(仅适用于惠普设备)
哪些工具可以自动启动取决于安装了哪些软件包、正在运行哪些打印机自动检测软件以及正在运行哪个桌面环境。
使用 YaST 打印机模块进行手动打印机配置
YaST 打印机模块的主要目的是手动配置。“手动”意味着您拥有完全的控制权,可以设置什么。没有静默工作的隐藏自动化,它会产生自动化“认为”对您最好的结果。但是,“手动”并不意味着您完全被抛弃。当有多种选择可用时,YaST 打印机模块会尽力预先选择似乎最合适的项目。在大多数情况下,接受预选内容应该可以很好地工作,但您仍然可以自由选择另一个选项。只有当尽力尝试未能确定合适的选择时,您才会被迫做出决定。这看起来可能很烦人,但它至少会使您意识到实际设置的内容,从而避免您在打印不起作用时对设置可能出错的原因一无所知。
如果任何类型的自动打印机设置都没有产生有效的打印机配置,自动化可能会让您独自一人。在这种情况下,您应该尝试使用 YaST 打印机模块进行手动配置。它至少可以指示故障点,如果它无法预先选择任何似乎合适的内容。
打印机配置对话框
当 YaST 打印机模块启动时,它会显示打印机配置。此对话框一目了然地显示了所有可用打印队列(本地和远程队列),并显示了所有可能的配置任务。
“本地/远程队列”和“本地/远程打印机”之间存在差异
- “本地队列”意味着配置在本地计算机上(严格来说,是 YaST 打印机模块运行的计算机)的打印队列,通常是用户坐在其前的计算机。
- “远程队列”意味着存在于网络中的任何计算机或任何网络打印机上的打印队列。
- “本地打印机”意味着直接连接到本地计算机(通常是 USB 打印机)的打印设备。
- “远程打印机”意味着未直接连接到本地计算机的打印设备(通常是具有内置网络接口的打印机)。
只能使用 YaST 打印机模块配置本地打印队列。但是,本地打印队列可以设置为本地打印机和远程打印机。打印设备如何连接并不重要,重要的是 YaST 打印机模块运行的计算机上是否存在打印队列配置。
每个打印队列都有一个任意的队列名称。通常,队列名称在某种程度上类似于打印机型号名称或打印机型号名称的缩写,再加上提示它产生哪种类型的打印输出或其他附加信息,例如
- ACME_FunPrinter_1000
- FP1000_mono
- FP1000_color
- FP1000_duplex
- FP1000_mono_room123
- FP1000_color_room123
- FP1000_mono_room456
- FP1000_color_duplex_room456
队列名称只能包含字母(a-z 和 A-Z)、数字(0-9)和下划线“_”,并且必须以字母开头。CUPS 不区分大小写,例如,“FP1000_mono”和“fp1000_mono”被视为相同的名称。
可选地,打印队列可以具有文本描述。通常,这描述了打印机型号和使用的打印机驱动程序或其他可用功能,例如
- ACME FunPrinter 1000 PCL
- ACME FunPrinter 1000 PostScript
- ACME FunPrinter 1000 PostScript with duplex unit
可选地,打印队列可以具有文本位置。这描述了打印设备的位置,例如
- 一楼 23 号房间
- 四楼 56 号房间
应用程序程序可能既不显示文本描述也不显示文本位置。因此,仅队列名称应提供足够的信息,以便用户可以注意到产生的打印输出类型以及打印设备所在的特定位置(尤其是在较大的位置)。
可以将其中一个打印队列设置为默认使用。如果用户未指定其他打印队列,应用程序程序应使用此类系统默认打印队列。但是,没有“唯一”的默认队列。除了系统默认队列之外,任何用户都可以维护自己的默认队列设置,此外,任何应用程序程序都可以实现其自己特定的默认队列设置方式(例如,应用程序程序可以记住先前使用的队列),请参阅 SDB:Print Settings with CUPS。
打印队列状态如下之一
- 就绪:队列接受打印作业并且已启用打印。
- 禁用打印输出:队列接受打印作业但不打印它们。
- 拒绝打印作业:队列不接受新的打印作业,但继续打印已在队列中的作业。
- 拒绝打印作业,禁用打印输出:队列既不接受新的打印作业,也不打印已在队列中的作业。
尤其是在大型场所,许多用户持续提交打印任务时,当需要对打印机设备进行维护时,管理员只会禁用打印,以便用户仍然可以提交打印任务,然后进行打印机设备维护,最后重新启用打印。相反,当需要移除打印机设备并删除其打印队列时,管理员只会拒绝打印任务,以便用户无法提交新的打印任务,但队列中已有的任务将继续打印,直到队列为空。然后可以删除队列,最后移除打印机设备。如果打印队列或打印机设备出现不明问题,管理员首先可以拒绝打印任务并禁用打印以停止任何活动,然后查看实际问题是什么。
可以通过“打印机配置”对话框执行以下配置任务
- 单击“添加”按钮来设置新的打印队列。这将启动“添加新的打印机配置”对话框。
- 选择现有的本地打印队列并单击“编辑”按钮以修改打印队列配置。这将启动“修改”对话框。
- 选择现有的本地打印队列并单击“删除”按钮以删除打印队列。
- 选择“通过网络打印”以配置如何从本地计算机在网络上的远程队列或远程打印机上打印。
- 选择“共享打印机”以配置在远程计算机上工作的其他用户如何通过网络访问您的本地打印队列。
每个配置任务都会返回到“打印机配置”对话框,您可以在其中执行更多配置任务或通过“确定”按钮退出 YaST 打印机模块。
添加新的打印机配置对话框
请记住打印的基本知识:设置打印机意味着设置打印队列并告知 CUPS
- 打印机设备如何连接。
- 哪个打印机驱动程序属于打印设备。
- 它应该获得什么打印队列名称。
因此,在“添加新的打印机配置”对话框中,您必须
- 选择匹配的打印机设备的连接。
- 找到并分配合适的打印机驱动程序。
- 设置队列名称。
连接
连接决定了数据如何发送到打印机设备。如果选择了错误的连接,则无法将任何数据发送到设备,因此无法进行任何打印。如果选择了不正确的连接,则可能无法可靠地将数据发送到设备,从而导致打印中断。
对于相同的物理连接(例如 USB 或网络电缆),可能有多种连接方法。如果可以通过多种连接方法自动检测到打印机设备,则可以针对每种连接方法显示它。这意味着如果可以通过多种方式访问同一打印机设备,则该设备可能会被多次列出。
特别是 HP USB 打印机通常可以通过通用的“usb:/...”和 HP 特定的“hp:/...”连接访问。后者由 HP 的驱动程序包 HPLIP 提供。对于普通打印,这两种连接方法都应该有效,但对于其他任何操作(例如通过 HP 的“hp-toolbox”进行设备状态,或使用 HP 一体机进行扫描),必须使用“hp:/...”连接。
YaST 打印机模块本身不实现任何打印机自动检测。它仅显示 CUPS 已经自动检测到的那些打印机连接(即,以 root 身份运行 CUPS 命令行工具“lpinfo -l -v”时显示的连接,请参阅 SDB:CUPS in a Nutshell)。当 CUPS 无法检测到本地打印机连接时,它无法向其发送数据,因此无法打印。因此,如果 YaST 打印机模块以某种方式显示 CUPS 未自动检测到的本地打印机连接,那将毫无意义。
最初仅显示本地打印机的连接(即,可以通过通用“usb:/...”连接访问的 USB 打印机以及可以通过 HP 特定的“hp:/...”连接访问的打印机),并且对于 HP 设备,优先使用“hp:/...”连接。单击“检测更多”按钮会显示 CUPS 自动检测到的所有连接。特别是,一些通过 USB 连接但行为不像是常规 USB 打印机的“特殊”打印设备无法通过通用的“usb:/...”连接方法访问,而是需要特殊的其他连接方法。各种连接方法由所谓的 CUPS 后端提供(参阅 SDB:CUPS in a Nutshell 中的“什么是 CUPS 后端以及它是如何工作的?”)。当对于“特殊”打印设备存在匹配的“特殊”CUPS 后端时,该后端可以自动检测到这些设备。最终,这意味着对于“特殊”打印设备,单击“检测更多”按钮可能会显示它们。
如果在单击“检测更多”按钮后未显示本地打印机,则该设备无法被 CUPS 自动检测。在这种情况下,根本原因通常是与设备的低级通信问题(也许打印机只需要打开电源)。例如,如果 USB 打印机未被 CUPS 自动检测到,但列在“lsusb”命令的输出中,则可能的原因之一是内核模块“usblp”未加载,请参阅 SDB:Installing a Printer。
是否可以通过 CUPS 自动检测网络打印机取决于特定的打印机型号。通常,这仅适用于可以通过本地网络环境中的一些通用 SNMP 查询检测到的网络打印机(这通常适用于具有制造商原始内置网络接口的 HP 和京瓷打印机)。
自动检测到的网络打印机显示为“socket:/...”连接,这是将数据发送到网络打印机最简单、最快且通常最可靠的方式,请参阅 SDB:Printing via TCP/IP network。
如果 CUPS 无法自动检测到网络打印机,或者您想通过打印服务器机器打印(例如,通过 Windows 或 Samba 服务器打印,或通过传统的 Unix 服务器打印),则必须通过“连接向导”手动指定连接。不幸的是,它的名称有些不恰当,因为 YaST 打印机模块中没有“向导”或任何其他晦涩的“魔法”,请参阅 。
驱动程序
驱动程序决定为特定打印机型号生成正确的数据。如果分配了错误的驱动程序,则会向打印机发送错误的数据,从而导致打印输出看起来很糟糕、混乱或根本无法打印。
最初,驱动程序搜索字符串的输入字段预设为当前所选连接的自动检测到的型号名称,并且默认情况下会显示驱动程序描述与型号名称匹配的那些驱动程序。如果驱动程序描述与自动检测到的型号名称匹配,并且所有匹配的驱动程序描述似乎都属于同一型号,则驱动程序描述将以特殊方式排序,以便将最合理的驱动程序列在最上方并自动预先选择它。
如果未自动预先选择驱动程序,则必须手动找到并选择合适的驱动程序。另一方面,如果自动预先选择了驱动程序,则不一定意味着该驱动程序适合您的特定需求。严格来说,自动预先选择的驱动程序可能根本无法用于您的特定打印机型号。原因是自动驱动程序选择只能基于字符串比较(自动检测到的型号名称和驱动程序描述),因此结果只能是对如何设置您的特定打印机型号的最佳猜测。因此,请检查当前预选值是否合理,并随时尝试修改设置,以了解最适合您的打印机的工作方式。如果驱动程序描述与自动检测到的型号名称不匹配,则不一定意味着没有可用的驱动程序。通常,驱动程序描述中的型号名称与自动检测到的型号名称不同。因此,您可以输入任何内容作为驱动程序搜索字符串,并搜索所有可用的驱动程序描述。
如果您找不到看起来适合您的打印机型号的驱动程序描述,或者您期望可用的驱动程序描述,则可以单击“驱动程序包”按钮以检查您是否需要安装更多的打印机驱动程序软件包。请参阅其中的“openSUSE 打印机驱动程序软件包”部分 Concepts printing。有关“打印机驱动程序软件包的版本升级”,请参阅 SDB:Installing a Printer。
如果您有 PostScript 打印机,则不需要打印机驱动程序软件,请参阅 Concepts printing。PostScript 打印机只需要与特定型号匹配的 PostScript 打印机描述 (PPD) 文件。对于 PostScript 打印机,制造商为每个特定型号提供 PPD 文件。要设置 PostScript 打印机,请使用制造商的 PPD 文件。许多此类 PPD 文件由 openSUSE 提供,其可用方式与所有其他驱动程序相同。如果 openSUSE 未提供您的特定 PostScript 打印机的 PPD 文件,则应从您的打印机制造商处获取匹配的 PPD 文件。制造商通常在其打印机软件包中或在其网站上提供 PPD 文件以供下载。获得来自打印机制造商的 PPD 文件后,单击“驱动程序包”按钮。在新对话框中,有一个“使打印机描述文件可用”项。如果 PPD 文件未位于 /usr/share/cups/model/ 目录中,则无法使用它来设置打印机配置。因此,您可以指定 PPD 文件的完整路径,该路径可以位于系统上的其他位置,以将其安装到 /usr/share/cups/model/ 目录中。之后,您的 PPD 文件将与所有其他驱动程序一样可用。要使用您的 PPD 文件设置您的 PostScript 打印机,您可能需要手动搜索所有可用的驱动程序描述,以便可以以与任何其他驱动程序相同的方式分配 PPD 文件(参见上文)。
通常,默认驱动程序选项设置应该合理,以便驱动程序适用于您的特定打印机型号。一些驱动程序选项设置必须与您的特定打印机匹配。特别是,驱动程序的默认纸张大小设置必须与实际加载到打印机中的纸张匹配。您可以显式选择 A4 或 Letter 作为默认纸张大小,也可以选择不选择任何内容以使用驱动程序的内置默认纸张大小,该大小也是驱动程序既不支持 A4 也不支持 Letter 时的回退选项(例如,小型照片打印机的驱动程序)。如果您想调整 A4 或 Letter 以外的其他驱动程序选项,则必须先设置队列,然后在第二步中可以通过“修改”对话框调整所有驱动程序选项。
队列名称
应用程序不显示打印机设备,而是显示打印队列。队列名称仅允许字母(a-z 和 A-Z)、数字(0-9)和下划线“_”,并且必须以字母开头,请参阅上文。
默认队列
可以将其中一个打印队列设置为默认使用。但请记住,没有“唯一”默认队列,请参阅上文。
HP 设备
设置 HP 设备的一种替代方法是运行“hp-setup”。HP 自己的工具“hp-setup”为 HP 打印机和 HP 一体机提供设置支持,特别是那些需要从 HP 下载并正确安装在特定最终用户系统上的专有驱动程序插件的设备。此外,“hp-setup”可以为 HP 网络打印机和 HP 一体化网络设备提供更好的设置支持,因为 HP 自己的工具可以为特殊的 HP 网络设备实现特殊处理。有关详细信息,请参阅 SDB:How to set-up a HP printer。
修改对话框
在“修改”对话框中,您可以以与“添加新的打印机配置”对话框中相同的方式更改打印队列的连接和驱动程序,但无法修改打印队列名称。
CUPS 不支持更改打印队列名称,YaST 打印机模块符合 CUPS,请参阅 其中“严格遵守 CUPS”部分。
队列名称是一个与任何其他内容关系太多的值,因此在不付出合理努力的情况下,很难更改此值。考虑以下问题:
- 队列当前活动的打印作业,
- 队列待处理的作业,
- 将队列作为成员的类,
- 队列的实例,
- ...
(类和实例是此处未描述的高级主题。)
似乎有些打印机配置工具假装可以重命名队列,但这些工具实际上所做的是删除它并创建一个新队列,但不知道上述情况下会发生什么。
连接、驱动程序和驱动程序选项
当您将当前使用的连接更改为另一个连接时,驱动程序搜索字符串的输入字段将预设为新选择的连接的自动检测到的型号名称,并且默认情况下会显示驱动程序描述与型号名称匹配的那些驱动程序。您可以输入任何内容作为驱动程序搜索字符串,并搜索所有可用的驱动程序描述。
您可以选择另一个驱动程序并稍后修改其驱动程序选项设置,也可以保留当前使用的驱动程序并修改其驱动程序选项设置。
当您将当前使用的驱动程序更改为另一个驱动程序时,必须先将此更改应用于打印队列,以便新驱动程序用于队列(即,您必须首先完成“修改”对话框),然后在第二步中可以通过再次使用“修改”对话框来调整所有驱动程序选项。
通常,最好保留驱动程序选项的默认设置,因为默认设置应该适用于常规打印。此外,常规应用程序程序中的打印对话框也显示驱动程序选项,以便每个用户可以为每个单独的打印输出指定正确的驱动程序选项。
当您修改当前使用的驱动程序的驱动程序选项时,将启动“驱动程序选项”对话框,该对话框将返回到“修改”对话框。一些驱动程序选项设置必须与您的特定打印机匹配。例如,驱动程序的默认纸张大小设置必须与实际加载到打印机中的纸张匹配。对于其他驱动程序选项设置,您可以选择您喜欢的设置。例如,可用打印分辨率的任何选择都应该适用于特定的驱动程序。但是,您的特定打印机可能无法以高分辨率打印。例如,如果您的激光打印机没有足够的内置内存来处理高分辨率页面,请参阅 SDB:Laser Printer Does Not Print Properly Or Does Not Print At All。
描述和位置
与连接和驱动程序不同,在使用它们时您必须选择正确的选项,您可以自由地输入任意字符串作为描述文本和位置。应用程序通常在打印对话框中显示描述和位置。为了确保这些字符串在任何特定应用程序的特定用户可能使用的语言中看起来都正确,在使用只有纯 ASCII 文本而没有特殊字符时是安全的,例如仅使用 ASCII 字母(a-z 和 A-Z)、ASCII 数字(0-9)以及 ASCII 空格字符(十六进制 20)。请参阅 SDB:Plain Text versus Locale。
默认队列和状态
最后是这些复选框
- 用作默认值
- 接受打印作业
- 启用打印
请参阅上述打印机配置对话框的描述,了解其含义。
通过网络打印对话框
通常使用 CUPS 通过网络打印。默认情况下,CUPS 使用其所谓的“浏览”模式来通过网络提供打印机,请参阅 SDB:CUPS in a Nutshell,其中的“CUPS <= 1.5 的固有设计用于网络打印”部分。在这种情况下,远程 CUPS 服务器将通过网络发布其打印机,因此您的主机上必须运行 CUPS 守护进程 (cupsd),该进程正在侦听已发布打印机的传入信息。
如果您可以访问远程 CUPS 服务器进行打印,但这些服务器未通过网络发布其打印机信息,或者您无法接受有关已发布打印机的传入信息(例如,因为您必须为发布打印机的网络区域提供防火墙保护),您可以从 CUPS 服务器请求打印机信息(前提是 CUPS 服务器允许您访问)。对于请求的每个 CUPS 服务器,CUPS 守护进程 (cupsd) 会在您的主机上启动一个 cups-polld 进程。有关防火墙,请参阅 SDB:CUPS and SANE Firewall settings。
如果您只通过网络打印,并且只使用单个 CUPS 服务器,则无需使用 CUPS 浏览功能并在您的主机上运行 CUPS 守护进程。相反,指定 CUPS 服务器并直接访问它会更简单。
如果您的网络中没有 CUPS 服务器,或者您必须直接访问网络打印机,或者您使用其他类型的打印服务器(例如,通过 Windows 或 Samba 服务器打印,或通过传统的 Unix 服务器打印),则您必须在您的主机上设置适当的打印队列。
通常,CUPS 应该设置为使用其所谓的“浏览”模式来通过网络提供打印机,请参阅上述通过网络打印对话框的描述。在这种情况下,CUPS 服务器通过网络发布其本地打印队列,因此在 CUPS 客户端系统上必须运行 CUPS 守护进程 (cupsd),该进程正在侦听已发布打印机的传入信息。
首先,必须允许 CUPS 客户端系统访问 CUPS 服务器。
然后,指定是否应将打印机发布给客户端。
在任何情况下都不需要发布打印机。如果您只有一个 CUPS 服务器,则无需使用 CUPS 浏览功能。相反,指定客户端系统上的 CUPS 服务器(通过“通过网络打印”对话框)会更简单,以便客户端直接访问服务器。
有关防火墙,请参阅 SDB:CUPS and SANE Firewall settings。