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

Graphics 是";光栅";是特定格式还是通用术语(关于CUPS打印库),graphics,cups,image,printing,Graphics,Cups,Image,Printing,我已经看到了与CUPS库相关的以下两个文件: 我不确定raster.c到底做了什么,但实际上它采用了PNG/JPEG/等格式,听起来像是“将其转换为光栅格式”。我不太明白这到底意味着什么。有些打印机是“PostScript打印机”,有些是“光栅打印机”,但我不确定这个术语“光栅”是否意味着有某种“打印机光栅格式”,比如PNG或JPG,或者它只是某种像素数组,或者其他什么。似乎打印机会有某种标准格式,但称之为“光栅”似乎有点误导,因为光栅基本上是某种东西的任意像素表示(据我理解) 希望您能

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

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

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

初步说明:您引用的不是本机CUPS API。它是OpenPrinting项目库的一部分。OpenAdvices提供并维护一组过滤器,这些过滤器可以集成和停靠在杯子中,主要用于Linux用户,因为苹果不再直接支持这个OS,而是将各自的CUPS代码部分交给Linux基金会…


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

这既不是TIFF,也不是PNG,也不是JPEG。CUPS光栅是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使用了一系列“过滤器”,从一种格式转换为另一种格式。它为每个打印作业自动构造这些链,具体取决于打印输入和所需(目标打印机)输出发出的当前需要:

您应该在Linux上的/usr/lib/cups/filter/目录(或macOS上的/usr/libexec/cups/filter/目录)中查看系统上所有已安装过滤器的列表。如果您可以同时访问Linux和macOS,您将看到许多不同之处:

  • macOS:例如,在macOS上,您将看到苹果专有的
    cgpdftoraster
    过滤器,它不是开源的,在Linux上不可用。(它与苹果的核心图形库接口,而苹果的核心图形库在Linux上没有使用。)这将转换为CUPS光栅格式

    然后还有(至少)两个过滤器接管生成的CUPS光栅并进一步转换:
    rastertopwg
    rastertourf

    • URF是一种(苹果公司专有)光栅格式,所有支持AirPrint且经过认证的打印机都必须支持这种格式
    • PWG是由指定的光栅格式。它非常类似于URF,每个经过认证的打印机都需要支持它

    如果您安装了任何供应商的打印机驱动程序,系统上可能还有其他rastertoXYZ过滤器

  • Linux:例如,在Linux上(安装了OpenPrinting的
    cups过滤器
    软件包),您将看到
    {pdf,image,gs}toraster
    ,它也转换为cups光栅格式

    这两个过滤器将CUPS光栅转换为pdf和pwg光栅

    同样:如果您安装了任何供应商专有的打印机驱动程序,或者如果您安装了其他打印机驱动程序包,如HPLIP、Gutenprint、printer-driver-foo2zjs、打印机驱动程序splix或打印机驱动程序brlaser(包名用于Debian),则系统上可能会有其他rastertoXYZ过滤器


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



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

光栅通常意味着图像存在于像素的光栅上,也就是说,它是位图,每个像素都可以通过
x,y
坐标进行寻址。这与Postscript和矢量图像形成对比,在Postscript和矢量图像中,直线或矩形将由其端点或顶点来描述。
  ## 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