【问题标题】:Is "raster" is a specific format or a general term (regarding CUPS printing library)是“光栅”是特定格式还是通用术语(关于CUPS打印库)
【发布时间】:2019-01-22 13:04:16
【问题描述】:

我看过与CUPS库相关的,这两个文件:

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

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

【问题讨论】:

  • 光栅通常意味着图像存在于像素的光栅网格上,即它是位图的并且每个像素都可以通过x,y坐标寻址。这与 Postscript 和矢量图像形成对比,后者将通过端点或顶点来描述线或矩形。

标签: graphics cups image printing


【解决方案1】:

初步说明:您引用的不是本机 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,你会发现很多不同之处:

  • ma​​cOS: 例如,在 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 个文件。


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

【讨论】:

    猜你喜欢
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多