确定了文件的 MIME 类型之后,就用 /etc/cups/mime.convs 文件查找正确的过滤器。这个文件的行有四项:源 MIME 类型和目标 MIME 类型、代价、过滤器的名称。这里使用了代价最小的过滤器。清单 2 显示了一些示例。
清单 2. /etc/cups/mime.convs 的过滤器项
text/plain application/postscript 33 texttops
text/html application/postscript 33 texttops
image/gif application/vnd.cups-postscript 66 imagetops
image/png application/vnd.cups-postscript 66 imagetops
image/jpeg application/vnd.cups-postscript 66 imagetops
image/tiff application/vnd.cups-postscript 66 imagetops
image/x-bitmap application/vnd.cups-postscript 66 imagetops
如果找不到合适的过滤器,尝试打印文件就会产生错误消息。如果使用 CUPS 之外的打印机守护程序,那么可能得到意料之外的输出。清单 3 显示了使用 DVI 文件时的情况(来自 TeX 和 LaTex 的正常输出)。
清单 3. 打印不支持的文件类型
[ian@attic4 ~]$ lpr samp1.dvi
lpr: Unsupported format 'application/octet-stream'!
用于 CUPS 打印的 DVI 过滤器
幸好,提供 TeX 和 LaTeX 的 tetex 包还提供了把 DVI 转换成 PostScript 的转换工具 dvips。不幸的是,它不能作为过滤器工作,因为它不知道如何处理 CUPS 过滤器必须处理的参数:作业 id、用户、作业标题、拷贝数量和作业选项。如果输入来自文件,那么过滤器管道中的第一个过滤器还具有额外的参数 —— 文件名。