<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于開(kāi)源軟件的嵌入式網(wǎng)絡(luò )打印服務(wù)器

基于開(kāi)源軟件的嵌入式網(wǎng)絡(luò )打印服務(wù)器

作者: 時(shí)間:2009-11-17 來(lái)源:網(wǎng)絡(luò ) 收藏

因此,必須采取一種機制,把PostScript格式轉換成機能夠識別的命令格式,而GhostScript程序就是用來(lái)完成這個(gè)工作的。Ghostscript將PostScript轉換成各種機能夠識別的格式。
機驅動(dòng)程序是應用與打印機之間交流的橋梁,它可以將轉化好的打印文件,按照各種打印機不同的格式發(fā)送給打印機,因此不同的打印機都有自己特有的打印驅動(dòng)程序。另外,隨驅動(dòng)程序一起發(fā)布的還有PPD文檔,PPD(PostScript Printer Description)是用來(lái)描述打印機功能的文件,里面包含了字體、打印頁(yè)面等的一些描述。在使用一款打印機之前,必須找到其相應的PPD文件,并正確地安裝到打印管理器程序上。筆者所用打印機為HP 1020plus激光打印機,CUPS不附帶此驅動(dòng),只能另行安裝。
為了讓不同的作業(yè)在打印的時(shí)候不產(chǎn)生沖突,就需要一個(gè)打印管理程序。這類(lèi)管理程序很多,使用最為廣泛的莫過(guò)于CUPS。CUPS接收要打印的文件;通過(guò)文件的類(lèi)型判斷是否需要將其轉換為PostScript,如果需要,則調用相應的應用程序進(jìn)行轉換;通過(guò)PPD文件來(lái)判斷Ghost-Script應使用何種驅動(dòng)處理此PostScript文件;把Ghost-Script處理的結果輸出到打印設備上。
在打印管理程序和Ghostscript之間,通常還安裝一種統一的打印過(guò)濾器程序foomatic-rip。它是用perl編寫(xiě)的腳本程序,打印管理程序通過(guò)它調用Ghostscript程序,從而把PostScript作業(yè)轉換成PPD文件描述的打印機自身能夠識別的格式。

本文引用地址:http://dyxdggzs.com/article/152277.htm


2 幾個(gè)關(guān)鍵問(wèn)題
2.1 的交叉編譯
由前面的分析可知,打印需要的支持,為了運行于Linux環(huán)境,需要對它們一一進(jìn)行交叉編譯。通常的編譯方法是在宿主機上進(jìn)行,筆者在反復實(shí)驗后不得不放棄,原因在于這些軟件還依賴(lài)于很多的其他軟件包。建議編譯安裝直接在開(kāi)發(fā)板上進(jìn)行,雖然速度較慢,但可以及時(shí)發(fā)現缺少的包。此編譯過(guò)程大約需要一周的時(shí)間。
①CUPS的編譯與安裝:


2.2 CGI程序的編寫(xiě)
設備通常都提供web管理方式,用以修改配置等。以修改IP地址為例,需要修改源碼目錄下的cgi―bin子目錄下的admin.c文件,參照do_am_printer()函數新增函數do_modify_ip,此函數的功能為讀取IP地址所在的配置文件,將IP地址、子網(wǎng)掩碼、默認網(wǎng)關(guān)等顯示在頁(yè)面文本框中,允許修改,提交修改時(shí)該函數將新的參數覆蓋原配置文件中舊的參數。為實(shí)現這一功能,主要用到了CUPS提供的文件操作函數cupsFileGets、cupsFi-leOpen、cupsFilePrintf,和有關(guān)CGI變量的讀寫(xiě)函數cgiGetVariable、cgiSetVariable和界面的顯示函數cgiStartHTM如IP地址L(title)、cgiCopyTemplateLang(error_ip.tmpl)、cgiEndHTML()。有關(guān)文件的讀寫(xiě)操作,可參照CUPS目錄下的testfile.c文件。
2.3 界面和提示語(yǔ)言漢化
CUPS支持多國語(yǔ)言版本,如果漢化,需要對界面標識、提示、按鈕等全面進(jìn)行漢化,工作量較大,需要修改doc/index.html,需要把templates語(yǔ)言版本挪到最外層,需要在loeale/cups_zh.po修改或增加新的中英文對照信息。更詳細的信息可參考CUPS運行后通過(guò)瀏覽器訪(fǎng)問(wèn)http://localhost:631/help下的Translating and Custom-izing CUPS文檔。
2.4 OUPS配置與調試
編輯/etc/cups/cupsd.conf在Location選項中添加容許訪(fǎng)問(wèn)的網(wǎng)段。為簡(jiǎn)單起見(jiàn),在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端口的訪(fǎng)問(wèn)控制去掉,否則將提示打印忙。在CUPS調試過(guò)程中,如果將cupsd.conf中的loglev-el info改成。loglevel debug,可以在var/log/cups/error_log中看到更多的輸出信息,極大地方便了調試,也可借助抓包程序輔助調試。在確認打印機能夠工作之前,暫不要通過(guò)方式驅動(dòng)打印機,可用命令行的方式添加、使能并測試打印機是否工作正常。由于沒(méi)有成熟的文檔,過(guò)程比較艱辛。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>