- 论坛徽章:
- 0
|
经过一段时间的研究,现已基本实现在arm linux里打印的功能。
首先交叉编译CUPS,这个就不细说了,configure一下即可。
先后用过两个打印机,第一个打印机HP P1008由于不支持标准的PCL,而只支持特殊的XQX Stream Protocol,最终无法搞定在板子上的文档数据转换而放弃。原因主要是:cups使用foomatic-rip做智能文档过滤器,这是一个perl程序,需要一个perl运行环境;需要调用第三方驱动foo2xqx和gs去进行数据转换,太复杂,通用性也不够(假如换打印机或支持更多打印机)。后来更换了一个支持PCL的HP打印机。
最终的实现抛开了cupsd和ghostscript,因为我的需求比较简单:打印jpeg图片。
我最终只使用了cups的两个过滤器程序imagetoraster, rastertohp,后端backend程序usb,还有打印机的PPD文件,一共只有几百K的大小。自己写脚本和程序实现打印,基本的流程如下:
imagetoraster | rastertohp | cat > /dev/usb/lp0
因为/dev/usb/lp0是独占打开的,所以这样打印会导致无法并发提交打印任务,所以自己写了个to_printer程序代替cat,其中使用简单的文件锁来产生当前有进程在打印时另外的打印进程等待的效果。
如果要支持多种复杂文档格式的打印,估计gs还是必不可少的,因为cups的过滤器也会调用gs,比如imagetops。
[ 本帖最后由 pilgrim_kevin 于 2008-9-25 11:02 编辑 ] |
|