“raster”是特定格式还是一般术语(关于CUPS打印库)

问题描述 投票:3回答:1

我见过与CUPS库有关的这两个文件:

我不确定raster.c究竟做了什么,但imagetoraster.c基本上采用了PNG / JPEG /等。并且“将其转换为栅格格式”听起来像。我不太清楚这究竟意味着什么。有些打印机是“PostScript打印机”,有些是“光栅打印机”,但我不确定这个术语“光栅”是否意味着存在某种类似PNG或JPG的“打印机栅格格式”,或者它只是一个数组某种像素,或其他东西。似乎打印机会有某种标准格式,但称它为“光栅”似乎有点误导,因为光栅基本上是某种东西的任意像素表示(根据我的理解)。

希望能够澄清这个CUPS过滤器/打印库中光栅的确切含义。我一直认为它实际上是某种类型的IANA mime类型,但我不确定。

graphics cups image printing
1个回答
1
投票

初步注意:您引用的不是原生CUPS API。它是OpenPrinting项目库的一部分。 OpenPrinting提供并维护一组可以集成和停靠在CUPS中的过滤器,主要用于Linux用户,因为Apple不再直接支持这个操作系统,而是将相应的CUPS代码部分移交给Linux基金会......


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

所以,既不是TIFF,也不是PNG,也不是JPEG。 CUPS-raster是特定于CUPS的图像格式,并且开发用于CUPS。

当可打印文档格式(如PostScript,PDF,TIFF,JPEG,PNG,Text,...)需要转换为打印机可以使用的格式时,此格式对某些类型的打印作业起中介作用。 (如果您今天购买打印机,可能会直接消耗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 /目录(或/ usr / libexec / cups / filter / on macOS)上查看系统上所有已安装过滤器的列表。如果您可以同时访问Linux和macOS,您会看到很多不同之处:

  • macOS:例如,在macOS上你会看到cgpdftoraster过滤器,它是Apple专有的,不作为开源发布,在Linux上不可用。 (它与Apple的核心图形库连接,无论如何都不在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,printer-driver-foo2zjs,printer-driver-splix或打印机,您的系统上可能还有其他rastertoXYZ过滤器-driver-brlaser(软件包名称适用于Debian)。

要查看哪个特定输入文件格式的mime类型可以通过哪个特定输出mime类型的过滤器进行转换,您应该查看并读取所有系统的/usr/share/cups/mime/*.convs文件。


CUPS用语中的“光栅打印机”是任何不使用PDF或PostScript的打印机。 (严格来说,市场上也有可以使用微软XPS / OXPS打印格式的打印机,这种打印格式也是基于矢量的。但CUPS不支持这些打印机,不论是在macOS上还是在Linux上。供应商只为Windows提供驱动程序。)

© www.soinside.com 2019 - 2024. All rights reserved.