Lan*_*ard 6 printing graphics image cups
我见过与CUPS库相关的,这两个文件:
我还不确定它raster.c
到底做什么,但imagetoraster.c
本质上是采用 PNG/JPEG/等。听起来像是“将其转换为光栅格式”。我不太明白这到底是什么意思。有些打印机是“PostScript打印机”,其他打印机是“光栅打印机”,但我不确定这个术语“光栅”是否意味着存在某种“打印机光栅格式”,例如PNG或JPG,或者它只是一个数组某种像素或其他东西。打印机似乎有某种标准格式,但称其为“光栅”似乎有点误导,因为光栅基本上是某种东西的任意像素表示(根据我的理解)。
希望人们能够澄清此 CUPS 过滤器/打印库中光栅的确切含义。我一直认为这实际上是某种 IANA 哑剧类型,但我不确定。
初步说明:您引用的不是本机 CUPS API。它是OpenPrinting项目库的一部分。OpenPrinting 提供并维护了一组可以集成并对接到 CUPS 的过滤器,主要面向 Linux 用户,因为 Apple 不再直接支持该操作系统,而是将相应的 CUPS 代码部分移交给 Linux 基金会...
在 CUPS 和您提到的两个库源文件的上下文中,“raster”是此处定义的特定光栅格式(并且它实际上已向 IANA 注册为 mime type '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
Run Code Online (Sandbox Code Playgroud)
为了完成这些转换,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
Run Code Online (Sandbox Code Playgroud)
您应该在Linux 上的/usr/lib/cups/filter/目录(或 macOS 上的/usr/libexec/cups/filter/ )中查看目录,以查看系统上所有已安装过滤器的列表。如果您可以访问 Linux 和 macOS,您会看到很多差异:
macOS:例如,在 macOS 上,您将看到cgpdftoraster
Apple 专有的过滤器,该过滤器未作为开源发布,并且在 Linux 上不可用。(它与 Apple 的核心图形库接口,无论如何,Linux 上都不使用该库。)这将转换为 CUPS 光栅格式。
然后(至少)还有两个过滤器接管生成的 CUPS 栅格并将其进一步转换:rastertopwg
和rastertourf
:
如果您安装了任何供应商的打印机驱动程序,您的系统上可能还有其他rastertoXYZ过滤器。
Linux:例如,在 Linux 上(cups-filters
安装了 OpenPrinting 的软件包)您将看到它{pdf,image,gs}toraster
也转换为 CUPS 光栅格式。
这两个过滤器rasterto{pdf,pwg}
将 CUPS 栅格转换为 PDF 和 PWG 栅格。
再次强调:如果您安装了任何供应商的专有打印机驱动程序,或者您安装了其他打印机驱动程序包,例如 HPLIP、Gutenprint、printer-driver-foo2zjs、printer-driver-splix 或 Printer,您的系统上可能还有其他 rastertoXYZ 过滤器-driver-brlaser(软件包名称适用于 Debian)。
要查看哪个过滤器可以将哪种特定输入文件格式 mime 类型转换为哪种特定输出 mime 类型,您应该查看并阅读系统的所有/usr/share/cups/mime/*.convs文件。
CUPS 术语中的“光栅打印机”是指任何不使用 PDF 或 PostScript 的打印机。(严格来说,市场上也有可以使用微软 XPS/OXPS 打印格式的打印机,该格式也是基于矢量的。但这些打印机在 macOS 和 Linux 上均不受 CUPS 支持。供应商仅提供适用于 Windows 的驱动程序。)