初步说明:您引用的不是本机 CUPS API。它是 OpenPrinting 项目库的一部分。 OpenPrinting 提供并维护了一组过滤器,这些过滤器可以集成并停靠在 CUPS 中,主要面向 Linux 用户,因为 Apple 不再直接支持该操作系统,而是将各自的 CUPS 代码部分交给了 Linux 基金会......
在 CUPS 和您提到的两个库源文件的上下文中,“光栅”是此处定义的特定光栅格式(实际上它在 IANA 注册为 MIME 类型'application/vnd.cups-raster'):
所以,这既不是 TIFF,也不是 PNG,也不是 JPEG。 CUPS-raster 是 CUPS 特有的一种图像格式,开发用于 CUPS。
当需要将可打印文档格式(如 PostScript、PDF、TIFF、JPEG、PNG、文本等)转换为打印机可以使用的格式时,此格式对某些类型的打印作业起到中介作用可以消费。 (如果你今天购买一台打印机,大约 95% 的机会它可以直接使用 PDF ——因此不需要真正的转换!)
但是,如果打印机不支持 PDF(与旧型号一样,如许多仅 HP PCL 的设备),则您需要将可打印格式转换为打印机的喜好。您可以看到 CUPS 光栅在可能的文件格式转换链中的“中介”角色,CUPS 可能会为每个打印作业自动设置这些转换链:
## FILE FORMAT CONVERSIONS
PDF -> CUPS-raster -> PCL6 # PCL6-consuming printer
PDF -> CUPS-raster -> PCL3 # PCL3-consuming printer
PDF -> CUPS-raster -> ESC/P # EPSON's ESC/P consuming printer
为了完成这些转换,CUPS 采用了一系列“过滤器”,将一种格式转换为另一种格式。它为每个打印作业自动构建这些链,具体取决于打印输入和(目标打印机)输出所指示的当前需求:
## CUPS FILTERING CHAIN EXAMPLES
(PDF input) -> pdftoraster -> rastertohp # PCL6-consuming printer
(PostScript input) -> gstoraster -> rastertohp # PCL3-consuming printer
(TIFF input) -> imagetoraster -> rastertoescpx # EPSON's ESC/P consuming printer
(PNG input) -> imagetoraster -> rastertopwg # any IPP-Everywhere printer
(JPEG input) -> imagetoraster -> rastertopdf # any PDF-enabled printer
(PDF input) -> pdftoraster -> rastertoqpdf # some Samsung printers consuming SPLIX
您应该在 Linux 上的 /usr/lib/cups/filter/ 目录(或 macOS 上的 /usr/libexec/cups/filter/)目录中四处寻找查看系统上所有已安装过滤器的列表。如果你可以同时使用 Linux 和 macOS,你会发现很多不同之处:
-
macOS: 例如,在 macOS 上,您会看到 cgpdftoraster 过滤器,它是 Apple 专有的,未作为开源发布,在 Linux 上不可用。 (它与 Apple 的 Core Graphic 库接口,无论如何都不会在 Linux 上使用。)这将转换为 CUPS 光栅格式。
然后有(至少)另外两个过滤器接管生成的 CUPS 栅格并进一步对其进行转换:rastertopwg 和 rastertourf:
如果您安装了任何供应商的打印机驱动程序,您的系统上可能还有其他 rastertoXYZ 过滤器。
-
Linux: 例如,在 Linux(安装了 OpenPrinting 的 cups-filters 软件包)上,您将看到 {pdf,image,gs}toraster 也可以转换转换为 CUPS 栅格格式。
两个过滤器rasterto{pdf,pwg}将 CUPS 栅格转换为 PDF 和 PWG 栅格。
再次重申:如果您安装了任何供应商的专有打印机驱动程序,或者如果您安装了其他打印机驱动程序包(例如 HPLIP、Gutenprint、打印机驱动程序),您的系统上可能会有额外的 rastertoXYZ 过滤器-foo2zjs、printer-driver-splix 或 printer-driver-brlaser(软件包名称用于 Debian)。
要查看哪个特定的输入文件格式 mime 类型可以通过哪个过滤器转换为哪个特定的输出 mime 类型,您应该查看并阅读系统的所有 /usr/share/cups/mime/*.convs 个文件。
CUPS 用语中的“光栅打印机”是任何不使用 PDF 或 PostScript 的打印机。 (严格来说,市场上也有打印机可以使用 Microsoft 的 XPS/OXPS 打印格式,该格式也是基于矢量的。但 CUPS 不支持这些打印机,无论是在 macOS 还是在 Linux 上。供应商仅提供适用于 Windows 的驱动程序.)