新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于开源软件的嵌入式网络打印服务器

基于开源软件的嵌入式网络打印服务器

作者:时间:2009-11-17来源:网络收藏

因此,必须采取一种机制,把PostScript格式转换成机能够识别的命令格式,而GhostScript程序就是用来完成这个工作的。Ghostscript将PostScript转换成各种机能够识别的格式。
机驱动程序是应用与打印机之间交流的桥梁,它可以将转化好的打印文件,按照各种打印机不同的格式发送给打印机,因此不同的打印机都有自己特有的打印驱动程序。另外,随驱动程序一起发布的还有PPD文档,PPD(PostScript Printer Description)是用来描述打印机功能的文件,里面包含了字体、打印页面等的一些描述。在使用一款打印机之前,必须找到其相应的PPD文件,并正确地安装到打印管理器程序上。笔者所用打印机为HP 1020plus激光打印机,CUPS不附带此驱动,只能另行安装。
为了让不同的作业在打印的时候不产生冲突,就需要一个打印管理程序。这类管理程序很多,使用最为广泛的莫过于CUPS。CUPS接收要打印的文件;通过文件的类型判断是否需要将其转换为PostScript,如果需要,则调用相应的应用程序进行转换;通过PPD文件来判断Ghost-Script应使用何种驱动处理此PostScript文件;把Ghost-Script处理的结果输出到打印设备上。
在打印管理程序和Ghostscript之间,通常还安装一种统一的打印过滤器程序foomatic-rip。它是用perl编写的脚本程序,打印管理程序通过它调用Ghostscript程序,从而把PostScript作业转换成PPD文件描述的打印机自身能够识别的格式。

本文引用地址:http://www.eepw.com.cn/article/152277.htm


2 几个关键问题
2.1 的交叉编译
由前面的分析可知,打印需要的支持,为了运行于Linux环境,需要对它们一一进行交叉编译。通常的编译方法是在宿主机上进行,笔者在反复实验后不得不放弃,原因在于这些软件还依赖于很多的其他软件包。建议编译安装直接在开发板上进行,虽然速度较慢,但可以及时发现缺少的包。此编译过程大约需要一周的时间。
①CUPS的编译与安装:


2.2 CGI程序的编写
设备通常都提供web管理方式,用以修改配置等。以修改IP地址为例,需要修改源码目录下的cgi―bin子目录下的admin.c文件,参照do_am_printer()函数新增函数do_modify_ip,此函数的功能为读取IP地址所在的配置文件,将IP地址、子网掩码、默认网关等显示在页面文本框中,允许修改,提交修改时该函数将新的参数覆盖原配置文件中旧的参数。为实现这一功能,主要用到了CUPS提供的文件操作函数cupsFileGets、cupsFi-leOpen、cupsFilePrintf,和有关CGI变量的读写函数cgiGetVariable、cgiSetVariable和界面的显示函数cgiStartHTM如IP地址L(title)、cgiCopyTemplateLang(error_ip.tmpl)、cgiEndHTML()。有关文件的读写操作,可参照CUPS目录下的testfile.c文件。
2.3 界面和提示语言汉化
CUPS支持多国语言版本,如果汉化,需要对界面标识、提示、按钮等全面进行汉化,工作量较大,需要修改doc/index.html,需要把templates语言版本挪到最外层,需要在loeale/cups_zh.po修改或增加新的中英文对照信息。更详细的信息可参考CUPS运行后通过浏览器访问http://localhost:631/help下的Translating and Custom-izing CUPS文档。
2.4 OUPS配置与调试
编辑/etc/cups/cupsd.conf在Location选项中添加容许访问的网段。为简单起见,在Order allow,deny后直接输入Allow all即可。
编辑/etc/cups/mime.convs,找到application/octet-stream application/vnd.cups-raw 0-行,将其注释掉,否则pdf、doc等文件格式将不被支持,提示“Print file wasnot accepted(Unsupported format 'application/octet-stream'!)”错误。另外,要将防火墙中对631端口的访问控制去掉,否则将提示打印忙。在CUPS调试过程中,如果将cupsd.conf中的loglev-el info改成。loglevel debug,可以在var/log/cups/error_log中看到更多的输出信息,极大地方便了调试,也可借助抓包程序辅助调试。在确认打印机能够工作之前,暂不要通过方式驱动打印机,可用命令行的方式添加、使能并测试打印机是否工作正常。由于没有成熟的文档,过程比较艰辛。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭