我正在尝试利用 CUPS 栅格并获得一些较低级别的信息,例如像素数据、颜色模式、每像素位数、每颜色位数以及其他任何信息。我无法弄清楚 CUPS 如何使用光栅。每当我将某些内容打印为PDF时,它都不会通过filter/raster.c文件中的任何功能。
我的方法/推理不正确吗?我尝试打印图像(png(,文本和PDF,结果是一样的。
CUPS 没有任何称为"光栅器"的组件。
当 CUPS 需要处理提交的文件时(您可以在命令行上打印,例如'lp -d printername the.file'
,你知道吗?
- 。它做的第一件事是自动键入传入文件以确定其MIME 类型;
- 。接下来,它检查用户请求的目标打印队列(上面推荐中的"打印机名称"(;每个目标打印机都需要自己的文件格式,这也是它自己的一种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源代码文件包含过滤链包含任何ABCDtoraster或rastertoXYZ过滤器时使用的代码。这些过滤器可能存在于也可能不存在于您的系统上的目录/usr/lib/cups/filter/
,它们创建或后处理此处定义的特定于 CUPS 的栅格格式:https://www.cups.org/doc/spec-raster.html