【问题标题】:At what point does CUPS actually call the rasterizer in the printing process?CUPS 在打印过程中实际上在什么时候调用光栅化器?
【发布时间】:2019-02-20 02:46:55
【问题描述】:

我正在尝试利用 CUPS 光栅并获取一些较低级别的信息,例如像素数据、颜色模式、每像素位数、每种颜色位数以及其他任何内容。我不知道 CUPS 如何使用光栅。每当我将某些内容打印到 PDF 时,它都不会通过 filter/raster.c 文件中的任何函数。

我的方法/推理不正确吗?我试过打印图像(png)、文本和 PDF,结果是一样的。

【问题讨论】:

  • 您的打印机理解 postscript 吗?那么要么已经有光栅化格式(如 PNG),要么没有要光栅化的东西......
  • 我没有打印到打印机,我使用生成 pdf 文件的 cups-pdf 打印。如果我打印一个文本文件,不应该在它到达打印机/队列(在本例中为 cups-pdf)之前对其进行光栅化吗?
  • 我不知道杯子的架构。但如果会的话,我会感到惊讶。 PDF 不是光栅格式,PS 也不是 ...
  • 这就是我困惑的原因。谢谢,菲利克斯!

标签: cups


【解决方案1】:

CUPS 没有任何称为“光栅化器”的组件。

当CUPS需要处理提交的文件时(可以在命令行打印,比如'lp -d printername the.file',你知道吗?),...

  • ...它所做的第一件事是自动键入传入的文件以确定它的mime 类型
  • ...接下来,它检查用户请求的目标打印队列(上面推荐中的'printername');每个目标打印机都需要自己的文件格式,这也是它自己的 mime 类型(对于 PCL、PostScript、ESC/P、GDI、专有的“任何东西”甚至是 PDF打印机);
  • ...根据当前作业的输入和所需的最终输出文件类型,CUPS 构建适当的过滤链并通过这些过滤器运行输入数据。

您可以通过启用 /etc/cups/cupsd.conf 中的 LogLevel debug 来跟踪这些转换过程(修改后重新启动 CUPS 守护程序)。然后,检查日志文件:

less /var/log/cups/error_log

现在将显示包含 'Started filter /usr/lib/cups/filter/...' 的行,指示链中每个过滤器的启动时间。

raster/raster.c 源代码文件包含在过滤链包含任何 ABCDtorasterrastertoXYZ 过滤器时使用的代码.这些过滤器可能存在也可能不存在于您的系统目录 /usr/lib/cups/filter/ 中,它们会创建或后处理此处定义的 CUPS 特定光栅格式:https://www.cups.org/doc/spec-raster.html

【讨论】:

    猜你喜欢
    • 2011-03-26
    • 2021-10-05
    • 2014-02-12
    • 2011-09-11
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2010-11-21
    相关资源
    最近更新 更多