本發(fā)明涉及打印驅(qū)動(dòng)領(lǐng)域,特別涉及對(duì)打印驅(qū)動(dòng)文本數(shù)據(jù)進(jìn)行采集,并對(duì)采集的打印文本數(shù)據(jù)進(jìn)行處理后輸入到打印機(jī)打印的方法及系統(tǒng)。
背景技術(shù):
在打印文檔時(shí),打印機(jī)驅(qū)動(dòng)將文檔生成圖片傳給打印機(jī),完成文檔的打印。打印機(jī)驅(qū)動(dòng)程序(Printer driver)是將計(jì)算機(jī)端所需打印輸出的文件,轉(zhuǎn)換成打印機(jī)能夠識(shí)別且完美打印出來(lái)的支撐程序。目前,MicrosoftWindows下的打印機(jī)驅(qū)動(dòng)程序通常分為GDI打印機(jī)驅(qū)動(dòng)程序、PCL打印機(jī)驅(qū)動(dòng)程序和PostScript打印機(jī)驅(qū)動(dòng)程序。在文檔打印之前,有各種各樣的應(yīng)用需求,其中對(duì)打印文檔的文本內(nèi)容獲取更為突出,可以通過(guò)獲取打印文本數(shù)據(jù)實(shí)現(xiàn)不同軟件系統(tǒng)之間的數(shù)據(jù)交換和業(yè)務(wù)集成,以及對(duì)打印方式和打印內(nèi)容的控制,實(shí)現(xiàn)更大的應(yīng)用價(jià)值。如果從原有的打印機(jī)驅(qū)動(dòng)獲取打印數(shù)據(jù),獲取的是打印圖片,無(wú)法獲取打印文本內(nèi)容,不能滿足應(yīng)用的要求。
如果采用其它的方法,如OCR(光學(xué)字符識(shí)別)識(shí)別打印圖片,識(shí)別的準(zhǔn)確率不高,并且效率低和成本高。這就需要尋找一種簡(jiǎn)單、高效和低成本的方法來(lái)到達(dá)文本數(shù)據(jù)采集和打印控制要求。
中國(guó)專利公開號(hào)CN 102968282 A就公開了一種截獲打印內(nèi)容的方法,具體截獲打印內(nèi)容的時(shí)間是應(yīng)用軟件發(fā)出打印指令后,打印機(jī)開始真實(shí)打印到打印紙之前。打印內(nèi)容的截獲是利用 windows 操作系統(tǒng)的打印機(jī)制來(lái)完成,如通過(guò)修改 DOS 設(shè)備驅(qū)動(dòng)程序或 BIOS 中的 INT 17H 中斷服務(wù)程序截獲打印內(nèi)容,或者利用簡(jiǎn)單的 Hook 程序?qū)?windows 操作系統(tǒng)的 GDI 函數(shù)進(jìn)行監(jiān)控,通過(guò) GDI 函數(shù)的 Textout 接口截獲其輸出的打印內(nèi)容等。該方法中打印內(nèi)容的截獲是利用 windows 操作系統(tǒng)的打印機(jī)制來(lái)完成,截獲的打印內(nèi)容為經(jīng)過(guò)打印驅(qū)動(dòng)處理后生成的擴(kuò)展名為 .SPL 的文件。這些文件也不是打印的文本數(shù)據(jù)不方便后續(xù)處理。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)目前基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集中不是采集的文本數(shù)據(jù),不方便后續(xù)處理的不足,提供一種基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制方法及系統(tǒng),該方法中采集的是基于打印驅(qū)動(dòng)的文本數(shù)據(jù),該系統(tǒng)完成該方法。
本發(fā)明所采用的技術(shù)方案是:基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制方法,利用一個(gè)打印控制裝置對(duì)打印內(nèi)容進(jìn)行處理,包括如下步驟:
步驟1、實(shí)時(shí)檢測(cè)是否有打印任務(wù)生成;若有打印任務(wù)生成轉(zhuǎn)向步驟2,否則繼續(xù)檢測(cè);
步驟2、采集打印的文本數(shù)據(jù);進(jìn)行打印內(nèi)容編碼;
步驟3、將文本數(shù)據(jù)傳送給打印控制裝置;
步驟4、打印控制裝置將接收到的文本數(shù)據(jù)集中分析、控制和處理;
步驟5、將文本數(shù)據(jù)保存或打印。
本發(fā)明獲取的是打印的文本數(shù)據(jù),處理更加方便。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制方法中:所述的步驟2中采集打印文本數(shù)據(jù)包括:
步驟21、檢測(cè)到應(yīng)用軟件創(chuàng)建了一個(gè)打印任務(wù),并通過(guò)相應(yīng)的打印內(nèi)容格式傳給打印機(jī)驅(qū)動(dòng);
步驟22、打印機(jī)驅(qū)動(dòng)接收打印內(nèi)容格式,按照格式規(guī)范解析出打印內(nèi)容;
步驟23、打印機(jī)驅(qū)動(dòng)根據(jù)打印內(nèi)容格式在畫布上繪制打印圖片;
步驟24、采集打印文本數(shù)據(jù)的裝置遍歷打印內(nèi)容,按順序提取文本塊數(shù)據(jù),包括文本內(nèi)容和格式信息;
步驟25、采集打印文本數(shù)據(jù)的裝置提取文本塊的格式信息,根據(jù)格式信息計(jì)算并格式化文本內(nèi)容;
步驟26、采集打印文本數(shù)據(jù)的裝置處理完整個(gè)文檔的所有文本塊后,按照順序組裝成所有文本塊,得到文本數(shù)據(jù)。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制方法中:所述步驟25中的格式信息包括絕對(duì)位置、相對(duì)位置、字體大小、對(duì)齊方式和塊寬度。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制方法中:所述的打印控制裝置的工作步驟包括:
步驟31、接收采集打印文本數(shù)據(jù)的裝置采集的打印文本數(shù)據(jù),按照編碼獲得完整文檔數(shù)據(jù);
步驟32、對(duì)編碼獲得完整文檔數(shù)據(jù)按照編碼規(guī)范進(jìn)行解碼,進(jìn)行打印內(nèi)容的預(yù)處理、分離和檢查;
步驟33、從編碼獲得完整文檔數(shù)據(jù)中提取打印圖片或者文本數(shù)據(jù);
步驟34、按照解析配置,對(duì)文本數(shù)據(jù)中的關(guān)鍵信息進(jìn)行分析,對(duì)打印圖片進(jìn)行加工處理。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制方法中:對(duì)文本數(shù)據(jù)中的關(guān)鍵信息進(jìn)行分析包括:進(jìn)行數(shù)據(jù)和業(yè)務(wù)規(guī)則處理,所述的業(yè)務(wù)規(guī)則處理包括對(duì)文本數(shù)據(jù)集成業(yè)務(wù)和控制規(guī)則處理。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制方法中:還包括以下步驟:
步驟35、將處理后的打印圖片發(fā)給原打印機(jī)驅(qū)動(dòng),提交打印任務(wù);
步驟36、將文本數(shù)據(jù)及提取的關(guān)鍵信息保存到數(shù)據(jù)庫(kù)中;
步驟37、打印出文檔內(nèi)容。
本發(fā)明還提供基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制系統(tǒng),該系統(tǒng)包括打印控制裝置;
實(shí)時(shí)檢測(cè)是否有打印任務(wù)生成的裝置;
采集打印的文本數(shù)據(jù)的裝置;進(jìn)行打印內(nèi)容編碼的裝置;
將文本數(shù)據(jù)傳送給所述的打印控制裝置的裝置;
所述的打印控制裝置包括將接收到的文本數(shù)據(jù)集中分析、控制和處理的裝置;
將文本數(shù)據(jù)保存或打印的裝置。
本發(fā)明中,打印控制裝置利用采集的打印文本數(shù)據(jù)對(duì)打印對(duì)象進(jìn)行處理。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制系統(tǒng)中:所述的實(shí)時(shí)檢測(cè)是否有打印任務(wù)生成的裝置包括:
檢測(cè)到應(yīng)用軟件創(chuàng)建了一個(gè)打印任務(wù),并通過(guò)相應(yīng)的打印內(nèi)容格式傳給打印機(jī)驅(qū)動(dòng)的裝置;
接收打印內(nèi)容格式,按照格式規(guī)范解析出打印內(nèi)容的裝置;
根據(jù)打印內(nèi)容格式在畫布上繪制打印圖片的裝置;
采集打印文本數(shù)據(jù)的裝置,所述的采集打印文本數(shù)據(jù)的裝置包括遍歷打印內(nèi)容,按順序提取文本塊數(shù)據(jù)的裝置和提取文本塊的格式信息,根據(jù)格式信息計(jì)算并格式化文本內(nèi)容的裝置以及處理完整個(gè)文檔的所有文本塊后,按照順序組裝成所有文本塊,得到文本數(shù)據(jù)的裝置。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制系統(tǒng)中:所述的打印控制裝置還包括:
接收采集打印文本數(shù)據(jù)的裝置采集的打印文本數(shù)據(jù),按照編碼獲得完整文檔數(shù)據(jù)的裝置;
對(duì)編碼獲得完整文檔數(shù)據(jù)按照編碼規(guī)范進(jìn)行解碼,進(jìn)行打印內(nèi)容的預(yù)處理、分離和檢查的裝置;
從編碼獲得完整文檔數(shù)據(jù)中提取打印圖片或者文本數(shù)據(jù)的裝置;
按照解析配置,對(duì)文本數(shù)據(jù)中的關(guān)鍵信息進(jìn)行分析,對(duì)打印圖片進(jìn)行加工處理的裝置。
進(jìn)一步的,上述的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制系統(tǒng)中:所述的打印控制裝置還包括:
將處理后的打印圖片發(fā)給原打印機(jī)驅(qū)動(dòng),提交打印任務(wù)的裝置;
將文本數(shù)據(jù)及提取的關(guān)鍵信息保存到數(shù)據(jù)庫(kù)中的裝置;
打印出文檔內(nèi)容的裝置。
以下將結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行較為詳細(xì)的說(shuō)明。
附圖說(shuō)明
圖1為本發(fā)明方法的主流程圖。
圖2是本發(fā)明打印驅(qū)動(dòng)文本數(shù)據(jù)采集流程圖。
圖3是本發(fā)明打印控制流程圖。
具體實(shí)施方式
實(shí)施例1,本實(shí)施例是一種商場(chǎng)超市或者其它需要打印小票或者購(gòu)物清單的場(chǎng)合,對(duì)POS機(jī)或者其它小票打印機(jī)打印的對(duì)象進(jìn)行文本數(shù)據(jù)采集與打印控制的系統(tǒng)。
該系統(tǒng)包括打印控制裝置;實(shí)時(shí)檢測(cè)是否有打印任務(wù)生成的裝置;采集打印的文本數(shù)據(jù)的裝置;進(jìn)行打印內(nèi)容編碼的裝置;將文本數(shù)據(jù)傳送給所述的打印控制裝置的裝置;所述的打印控制裝置包括將接收到的文本數(shù)據(jù)集中分析、控制和處理的裝置;將文本數(shù)據(jù)保存或打印的裝置。
其中實(shí)時(shí)檢測(cè)是否有打印任務(wù)生成的裝置包括:檢測(cè)到應(yīng)用軟件創(chuàng)建了一個(gè)打印任務(wù),并通過(guò)相應(yīng)的打印內(nèi)容格式傳給打印機(jī)驅(qū)動(dòng)的裝置;接收打印內(nèi)容格式,按照格式規(guī)范解析出打印內(nèi)容的裝置;根據(jù)打印內(nèi)容格式在畫布上繪制打印圖片的裝置;采集打印文本數(shù)據(jù)的裝置,所述的采集打印文本數(shù)據(jù)的裝置包括遍歷打印內(nèi)容,按順序提取文本塊數(shù)據(jù)的裝置和提取文本塊的格式信息,根據(jù)格式信息計(jì)算并格式化文本內(nèi)容的裝置以及處理完整個(gè)文檔的所有文本塊后,按照順序組裝成所有文本塊,得到文本數(shù)據(jù)的裝置。
而打印控制裝置還包括:接收采集打印文本數(shù)據(jù)的裝置采集的打印文本數(shù)據(jù),按照編碼獲得完整文檔數(shù)據(jù)的裝置;對(duì)編碼獲得完整文檔數(shù)據(jù)按照編碼規(guī)范進(jìn)行解碼,進(jìn)行打印內(nèi)容的預(yù)處理、分離和檢查的裝置;從編碼獲得完整文檔數(shù)據(jù)中提取打印圖片或者文本數(shù)據(jù)的裝置;按照解析配置,對(duì)文本數(shù)據(jù)中的關(guān)鍵信息進(jìn)行分析,對(duì)打印圖片進(jìn)行加工處理的裝置;將處理后的打印圖片發(fā)給原打印機(jī)驅(qū)動(dòng),提交打印任務(wù)的裝置;將文本數(shù)據(jù)及提取的關(guān)鍵信息保存到數(shù)據(jù)庫(kù)中的裝置;打印出文檔內(nèi)容的裝置。
本實(shí)施例的基于打印驅(qū)動(dòng)的文本數(shù)據(jù)采集與打印控制系統(tǒng)具體的控制方法包括以下步驟:如圖 1所示:
S10:實(shí)時(shí)檢測(cè)小票打印機(jī)的應(yīng)用軟件輸出打印任務(wù)。在實(shí)踐使用過(guò)程中也可以是其它打印任務(wù),本來(lái)一個(gè)應(yīng)用軟件打印一個(gè)文檔或者其它圖片等,它是直接打印,這里檢測(cè)有沒(méi)有這個(gè)任務(wù),不影響打印任務(wù)的實(shí)現(xiàn)。
S11:數(shù)據(jù)采集的打印機(jī)驅(qū)動(dòng)部分,獲取打印數(shù)據(jù)和文本數(shù)據(jù),進(jìn)行打印內(nèi)容編碼。這里編碼是為了對(duì)打印內(nèi)容的傳輸,只有編碼,才可能保證打印內(nèi)容的完整性、結(jié)構(gòu)化、傳輸合法校驗(yàn)、重傳等。
該步驟如圖2所示:包括以下內(nèi)容
S20:應(yīng)用軟件創(chuàng)建一個(gè)打印任務(wù),通過(guò)相應(yīng)的打印內(nèi)容格式傳給打印機(jī)驅(qū)動(dòng)。
S21:打印機(jī)驅(qū)動(dòng)接收打印內(nèi)容格式,按照格式規(guī)范解析出打印內(nèi)容。
S22:根據(jù)打印內(nèi)容格式在畫布上繪制打印圖片。
S23:遍歷打印內(nèi)容,按順序提取文本塊數(shù)據(jù),包括文本內(nèi)容和格式信息。
S24:提取文本塊的絕對(duì)位置、相對(duì)位置、字體大小、對(duì)齊方式和塊寬度等格式信息,根據(jù)格式信息計(jì)算并格式化文本內(nèi)容。
S25:處理完整個(gè)文檔的所有文本塊后,按照順序組裝成所有文本塊,得到文本數(shù)據(jù)。
S26:將生成的打印圖片和文本數(shù)據(jù)進(jìn)行編碼打包,準(zhǔn)備發(fā)給打印控制系統(tǒng)。
該步驟中,一旦檢測(cè)到應(yīng)用程序生成了打印任務(wù),就將要打印的文檔直接采集。
S12:將打印內(nèi)容通過(guò)網(wǎng)絡(luò)等通信方式傳輸出去。這里主要是指通過(guò)采集獲得的打印數(shù)據(jù)和文本數(shù)據(jù),傳送到打印控制裝置,這里打印控制裝置可以是另外一臺(tái)設(shè)備,也可以是小票打印機(jī)主機(jī)上的一個(gè)模塊。目前,有很多方式可以實(shí)現(xiàn)將采集到的打印內(nèi)容(小票的文本數(shù)據(jù)信息)傳送到打印控制裝置。
S13:打印控制裝置對(duì)打印內(nèi)容的集中分析、控制和處理。這里主要是指采集到打印內(nèi)容(小票的文本數(shù)據(jù)信息)以后,對(duì)采集的文本數(shù)據(jù)進(jìn)行應(yīng)用,可有多種用途,如:如與手機(jī)支付結(jié)合,從文本數(shù)據(jù)中獲取訂單號(hào)和金額等信息,直接提示用戶手機(jī)掃二維碼支付,支付完后,再將支付結(jié)果一起打印。也可提取關(guān)鍵信息,對(duì)打印的敏感信息進(jìn)行限制等。如圖3所示,包括以下內(nèi)容:
S30:接收通過(guò)網(wǎng)絡(luò)等通信方式傳過(guò)來(lái)的打印數(shù)據(jù),按照編碼獲得完整文檔數(shù)據(jù)。
S31:對(duì)編碼的打印內(nèi)容按照編碼規(guī)范進(jìn)行解碼,進(jìn)行打印內(nèi)容的預(yù)處理、分離和檢查等。
S32:從編碼打印內(nèi)容中提取打印圖片。
S33:從編碼打印內(nèi)容中提取文本數(shù)據(jù)。
S34:按照解析配置,提取文本數(shù)據(jù)中的關(guān)鍵信息,并進(jìn)行分析,進(jìn)行數(shù)據(jù)和業(yè)務(wù)規(guī)則處理,包括對(duì)文本數(shù)據(jù)集成業(yè)務(wù)和控制規(guī)則,對(duì)打印圖片進(jìn)行加工處理等。
S35:將處理后的打印圖片發(fā)給原打印機(jī)驅(qū)動(dòng),提交打印任務(wù)。
S36:將文本數(shù)據(jù)及提取的關(guān)鍵信息保存到數(shù)據(jù)庫(kù)中。
S37:打印出文檔內(nèi)容。
S14:將文本數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。
S15:將打印數(shù)據(jù)傳給打印機(jī)打印。