“光栅”是特定格式还是通用术语(关于CUPS打印库)

时间:2019-01-22 13:04:17

标签: graphics cups image printing

我已经看到与CUPS库相关的两个文件:

我不确定raster.c到底做了什么,但是imagetoraster.c实际上需要PNG / JPEG / etc。并听起来像是“将其转换为栅格格式”。我不太清楚这到底意味着什么。有些打印机是“ PostScript打印机”,有些是“光栅打印机”,但是我不确定这个术语“光栅”是否意味着存在某种“打印机光栅格式”,例如PNG或JPG,或者仅仅是一个数组。某种像素或其他像素。打印机似乎具有某种标准格式,但是将其称为“光栅”似乎有点误导,因为光栅基本上是某种东西的任意像素表示(据我的理解)。

希望可以弄清楚此CUPS过滤器/打印库中栅格的确切含义。我一直认为这实际上是某种IANA模仿类型,但我不确定。

1 个答案:

答案 0 :(得分:1)

初步说明:您引用的不是本机CUPS API。它是 OpenPrinting 项目的库的一部分。 OpenPrinting提供并维护了一组过滤器,这些过滤器可以集成并停靠到CUPS中,主要是针对Linux用户,因为Apple不再直接支持此操作系统,而是将各自的CUPS代码部分移交给了Linux Foundation ...


在CUPS和您提到的两个库源文件的上下文中,“栅格”是此处定义的特定栅格格式(并且实际上已在IANA上注册为mime类型'application/vnd.cups-raster'):

因此,这既不是TIFF,也不是PNG,也不是JPEG。 CUPS-raster是CUPS专用的图像格式,并已开发用于CUPS。

当需要将可打印文档格式(例如PostScript,PDF,TIFF,JPEG,PNG,文本等)转换为打印机所需的格式时,此格式在某些类型的打印作业中起中介作用可以消耗。 (如果您今天购买打印机,则可以直接使用PDF的机会约为95%,因此不需要真正的转换!)

但是,如果打印机不支持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栅格并将其进一步转换:rastertopwgrastertourf

    • URF是(Apple专有的)栅格格式,所有启用了AirPrint并经过认证的打印机都必须支持。
    • PWG是Printer Working Group (PWG)指定的栅格格式。它与URF非常相似,每台经过IPP Everywhere认证的打印机都必须支持它。

    如果您已经安装了任何供应商的打印机驱动程序,则系统上可能会有其他 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 < / em>文件。


用CUPS的话来说,“光栅打印机”是任何不使用PDF或PostScript的打印机。 (严格来说,市场上还有一些打印机可以使用Microsoft的XPS / OXPS打印格式,该格式也是基于矢量的。但是CUPS既不支持,也不在macOS和Linux上提供支持。供应商仅提供Windows驱动程序。)