CUPS在什么时候在打印过程中实际调用光栅化器?

时间:2018-05-03 11:35:56

标签: cups

我正在尝试使用CUPS栅格并获取一些较低级别的信息,例如像素数据,颜色模式,每像素位数,每种颜色的位数以及其他任何其他信息。我无法弄清楚CUPS如何使用栅格。每当我打印到PDF格式的东西时,它都不会通过filter / raster.c文件中的任何函数。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

less /var/log/cups/error_log

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

raster / raster.c 源代码文件包含的代码,如果过滤链包含任何 ABCDtoraster rastertoXYZ 过滤器,则将使用该代码。 。这些过滤器可能会或可能不会出现在系统中的目录 /usr/lib/cups/filter/ 中,它们会创建或后处理此处定义的CUPS特定栅格格式:https://www.cups.org/doc/spec-raster.html