CUPS (OpenSUSE) 应用在后端之前执行的自定义过滤器
CUPS (OpenSUSE) apply custom filter which is executed just before backend
我遇到了一个包含多个阶段的任务。一个阶段可以表述为 "catch every print job file before printing and save it in the specified place; print job file should contain information such as total pages for printing etc.".
据我了解,CUPS 实现了可扩展的管道,其中包含过滤器链、后端和其他部分。
在过滤器管道中,通常 PSTOPS 或 PDFTOPDF 过滤器插入我想要获取的特定打印作业信息。
我想我必须在 PSTOPS/PDFTOPDF 和备份打印作业之后立即实施自定义过滤器。为了实现它,我将添加
application/vnd.cups-postscript application/vnd.cups-postscript 0 customFIlterName
application/vnd.cups-pdf application/vnd.cups-pdf 0 customFilterName
到mime.convs(或local.convs)。
我的问题来了:
- 我的自定义过滤器会被调用吗? (它们的成本为零,但我不确定 CUPS 是否会将此步骤添加到管道中)
- 我应该如何处理未命中 PSTOPS|PDFTOPDF 过滤器的队列?
- 早晚,管道到达直接与打印机通信的后端部分。我应该尝试在此阶段进行备份而不是过滤阶段吗?如果可以,如何实现?
非常感谢您的回复!
我想分享我实现的内容,以防它对其他人有用。
设备功能和一些其他信息包含在相关的 ppd 文件中 (etc/cups/ppd/DEVICE_NAME.ppd)。
Ppd 文件包含类似“*cupsFilter: IN_MIME OUT_MIME FILTER_NAME”的字符串。
此字符串指示应在后端之前最后调用哪个过滤器。
字符串可能会被编辑,例如 IN_MIME 变成 CUSTOM_IN_MIME 应该声明到相关的 cups mime 描述文件中。然后,零成本的自定义过滤器可能被声明为 IN_MIME CUSTOM_IN_MIME。
那么它是唯一理解 CUSTOM_IN_MIME 的过滤器,因此必须调用(实际上,CUSTOM_IN_MIME 与 IN_MIME 相同,引入只是为了强制使用自定义过滤器).
在CUSTOM_FILTER中我们可以实现任何我们想要的。这是注入 CUPS 的非常强大和通用的方法。
希望对大家有所帮助。
我遇到了一个包含多个阶段的任务。一个阶段可以表述为 "catch every print job file before printing and save it in the specified place; print job file should contain information such as total pages for printing etc.".
据我了解,CUPS 实现了可扩展的管道,其中包含过滤器链、后端和其他部分。
在过滤器管道中,通常 PSTOPS 或 PDFTOPDF 过滤器插入我想要获取的特定打印作业信息。
我想我必须在 PSTOPS/PDFTOPDF 和备份打印作业之后立即实施自定义过滤器。为了实现它,我将添加
application/vnd.cups-postscript application/vnd.cups-postscript 0 customFIlterName
application/vnd.cups-pdf application/vnd.cups-pdf 0 customFilterName
到mime.convs(或local.convs)。
我的问题来了:
- 我的自定义过滤器会被调用吗? (它们的成本为零,但我不确定 CUPS 是否会将此步骤添加到管道中)
- 我应该如何处理未命中 PSTOPS|PDFTOPDF 过滤器的队列?
- 早晚,管道到达直接与打印机通信的后端部分。我应该尝试在此阶段进行备份而不是过滤阶段吗?如果可以,如何实现?
非常感谢您的回复!
我想分享我实现的内容,以防它对其他人有用。
设备功能和一些其他信息包含在相关的 ppd 文件中 (etc/cups/ppd/DEVICE_NAME.ppd)。
Ppd 文件包含类似“*cupsFilter: IN_MIME OUT_MIME FILTER_NAME”的字符串。 此字符串指示应在后端之前最后调用哪个过滤器。 字符串可能会被编辑,例如 IN_MIME 变成 CUSTOM_IN_MIME 应该声明到相关的 cups mime 描述文件中。然后,零成本的自定义过滤器可能被声明为 IN_MIME CUSTOM_IN_MIME。
那么它是唯一理解 CUSTOM_IN_MIME 的过滤器,因此必须调用(实际上,CUSTOM_IN_MIME 与 IN_MIME 相同,引入只是为了强制使用自定义过滤器).
在CUSTOM_FILTER中我们可以实现任何我们想要的。这是注入 CUPS 的非常强大和通用的方法。
希望对大家有所帮助。