本申請(qǐng)涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種打印裝置及打印方法。
背景技術(shù):
在線下場(chǎng)景中,小票打印是一種很常用的功能。然而,小票打印的使用場(chǎng)景比較復(fù)雜,不同用戶使用的打印設(shè)備存在不同,有的用戶使用的是藍(lán)牙打印設(shè)備,有的用戶使用的是usb打印設(shè)備,這就需要打印軟件開發(fā)工具包(softwaredevelopmentkit,sdk)能夠支持多種打印設(shè)備的使用。
不同的打印設(shè)備需要有不同的打印上下文(也即控制打印設(shè)備打印的程序)來支持。為了使打印sdk能夠支持多種打印設(shè)備的使用,現(xiàn)有的設(shè)計(jì)方式是在打印sdk中設(shè)置多個(gè)功能單元,每個(gè)功能單元獨(dú)立支持一種打印設(shè)備的使用。每個(gè)功能單元中集成了其支持的打印設(shè)備的打印上下文、打印參數(shù)配置功能、打印時(shí)數(shù)據(jù)解析的功能等,用戶在終端設(shè)備上安裝打印sdk后,可以直接調(diào)用目標(biāo)打印設(shè)備所對(duì)應(yīng)的功能單元來進(jìn)行打印。
按照現(xiàn)有的設(shè)計(jì)方式,每增加一種支持的打印設(shè)備,就需要在打印sdk中重新設(shè)計(jì)一個(gè)功能單元來支持該打印設(shè)備實(shí)現(xiàn)整個(gè)打印流程,這種方式可擴(kuò)展性較差。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種打印裝置及打印方法,用以解決現(xiàn)有的支持打印的方式可擴(kuò)展性較差的問題。
本申請(qǐng)實(shí)施例提供一種打印裝置,包括:
配置管理單元,用于提供打印設(shè)備配置接口,供用戶配置需要使用的打印 設(shè)備信息,并保存該打印設(shè)備信息;
打印上下文工廠,用于從打印上下文庫(kù)中獲取所述配置管理單元保存的打印設(shè)備信息所對(duì)應(yīng)的打印上下文,并將其寫入虛擬上下文接口;
打印上下文庫(kù),用于存儲(chǔ)對(duì)應(yīng)不同打印設(shè)備的打印上下文;
虛擬上下文接口,用于保存所述打印上下文工廠寫入的打印上下文,并提供打印調(diào)用接口。
可選地,所述裝置還包括:
模版管理單元,用于為用戶配置定制化的打印模版,其中,所述打印模版中記錄有打印小票對(duì)應(yīng)的標(biāo)簽內(nèi)容及內(nèi)容屬性信息。
可選地,所述裝置還包括:
數(shù)據(jù)解析器,用于基于待打印數(shù)據(jù)和所述模版管理單元配置的定制化的打印模版,生成可打印數(shù)據(jù)流,以供被打印成小票。
可選地,所述配置管理單元還用于提供打印參數(shù)配置接口,供用戶配置打印參數(shù)信息,并保存該打印參數(shù)信息;
數(shù)據(jù)解析器具體用于:基于待打印數(shù)據(jù)、所述模版管理單元配置的定制化的打印模版、和所述配置管理單元保存的打印參數(shù)信息,生成可打印數(shù)據(jù)流。
可選地,所述裝置還包括:
打印用戶界面ui,用于接收用戶的打印指示;
打印接口,用于根據(jù)所述打印ui的指示,生成打印任務(wù),并將生成的打印任務(wù)加入打印線程池;
打印線程池,用于存儲(chǔ)打印任務(wù)。
本申請(qǐng)實(shí)施例提供一種打印方法,包括:
在獲取打印任務(wù)后,通過調(diào)用打印上下文工廠,從打印上下文庫(kù)中獲取配置管理單元保存的打印設(shè)備信息所對(duì)應(yīng)的打印上下文,并將其寫入虛擬上下文接口;其中,所述打印上下文庫(kù)中存儲(chǔ)有對(duì)應(yīng)不同打印設(shè)備的打印上下文;所述配置管理單元保存的打印設(shè)備信息,為用戶基于該配置管理單元提供的打印 設(shè)備配置接口配置的;
通過調(diào)用虛擬上下文接口,將所述打印任務(wù)指示的待打印數(shù)據(jù)打印成小票。
可見,采用上述打印裝置及打印方法,當(dāng)需要打印sdk增加對(duì)新的打印設(shè)備的支持能力時(shí),只需要將該新的打印設(shè)備對(duì)應(yīng)的打印上下文存入打印上下文庫(kù),而對(duì)于打印時(shí)所需的其它功能,如數(shù)據(jù)解析功能、打印配置功能等,則可以在各個(gè)不同的打印設(shè)備間共享,這種支持打印的方式的可擴(kuò)展性較強(qiáng)。
本申請(qǐng)還通過設(shè)置模版管理單元來支持打印樣式的多樣化,模板管理單元可以為用戶配置定制化的打印模版,在打印時(shí)通過調(diào)用用戶定制的打印模板,就可以打印出該用戶所要求的打印樣式。
附圖說明
圖1為本申請(qǐng)實(shí)施例提供的打印裝置結(jié)構(gòu)示意圖;
圖2為打印出的小票示意圖;
圖3為本申請(qǐng)實(shí)施例提供的打印方法流程圖。
具體實(shí)施方式
本申請(qǐng)實(shí)施例通過配置打印上下文庫(kù)來存儲(chǔ)對(duì)應(yīng)不同打印設(shè)備的打印上下文,通過配置管理單元來配置打印設(shè)備,在執(zhí)行打印任務(wù)時(shí),通過調(diào)用打印上下文工廠從打印上下文庫(kù)中獲取配置管理單元配置的打印設(shè)備所對(duì)應(yīng)的打印上下文,并將其寫入虛擬上下文接口,通過調(diào)用虛擬上下文接口來實(shí)現(xiàn)打印。采用這種方式,當(dāng)需要打印sdk增加對(duì)新的打印設(shè)備的支持能力時(shí),只需要將該新的打印設(shè)備對(duì)應(yīng)的打印上下文存入打印上下文庫(kù),而對(duì)于打印時(shí)所需的其它功能,如數(shù)據(jù)解析功能、打印配置功能等,則可以在各個(gè)不同的打印設(shè)備間共享,因此,這種支持打印的方式的可擴(kuò)展性較強(qiáng)。
另外,本申請(qǐng)實(shí)施例還提供了對(duì)打印機(jī)中多種打印樣式的支持。在傳統(tǒng)的 打印方式中,打印樣式通常是單一化的,這里的打印樣式并不是指?jìng)鹘y(tǒng)的打印配置參數(shù)(如打印版式、縮放程度)的不同,而是指的具體的標(biāo)簽內(nèi)容設(shè)計(jì)及內(nèi)容屬性的不同。本申請(qǐng)實(shí)施例通過設(shè)置模版管理單元來支持打印樣式的多樣化,模板管理單元可以為用戶配置定制化的打印模版,在打印時(shí)通過調(diào)用用戶定制的打印模板,就可以打印出該用戶所要求的打印樣式。
下面結(jié)合說明書附圖對(duì)本申請(qǐng)實(shí)施例作進(jìn)一步詳細(xì)描述。
如圖1所示,為本申請(qǐng)實(shí)施例提供的打印裝置100結(jié)構(gòu)示意圖,包括以下單元:
打印用戶界面(userinterface,ui)11,用于接收用戶的打印指示。
打印接口(printinterface)12,用于根據(jù)打印ui11的指示,生成打印任務(wù),并將生成的打印任務(wù)加入打印線程池。
打印線程池(printtaskpool)13,用于存儲(chǔ)打印任務(wù)。
配置管理(configurationmanagement)單元14,用于提供打印設(shè)備配置接口,供用戶配置需要使用的打印設(shè)備信息,并保存該打印設(shè)備信息;這里,配置管理單元向用戶提供打印設(shè)備配置接口,用戶可以通過該單元配置打印設(shè)備信息,比如打印設(shè)備名稱、標(biāo)識(shí)id等。
打印上下文工廠(printcontextfactory)15,用于在接收到打印任務(wù)的調(diào)用指示后,從打印上下文庫(kù)中獲取配置管理單元14保存的打印設(shè)備信息所對(duì)應(yīng)的打印上下文,并將其寫入虛擬上下文接口。
打印上下文庫(kù)16,用于存儲(chǔ)對(duì)應(yīng)不同打印設(shè)備的打印上下文。
比如,藍(lán)牙打印上下文(bluetoothprintercontext)、com打印上下文(comprintercontext)、usb打印上下文(usbprintercontext)、通用打印上下文(generalprintercontext)。
虛擬上下文接口(virtualcontextinterface)17,用于保存所述打印上下文工廠15寫入的打印上下文,并提供打印調(diào)用接口。這里,通過調(diào)用虛擬上下文接口17,將待打印數(shù)據(jù)打印成小票,同時(shí)可以屏蔽具體的打印設(shè)備細(xì)節(jié),從 而上層可以無感知地支持打印設(shè)備的打印。
在具體實(shí)施中,打印進(jìn)程在通過打印用戶界面ui11接收到用戶的打印指示后,通過調(diào)用打印接口12,基于所述打印指示生成打印任務(wù),并將生成的打印任務(wù)加入打印線程池13;從所述打印線程池13中調(diào)取當(dāng)前待處理的打印任務(wù),打印任務(wù)中包含待打印數(shù)據(jù)。在獲取打印任務(wù)后,通過調(diào)用打印上下文工廠15,從打印上下文庫(kù)16中獲取配置管理單元14保存的打印設(shè)備信息所對(duì)應(yīng)的打印上下文,并將其寫入虛擬上下文接口17;通過調(diào)用虛擬上下文接口17,將所述打印任務(wù)指示的待打印數(shù)據(jù)打印成小票。
在上述過程中,打印進(jìn)程可以通過調(diào)用數(shù)據(jù)解析器(metadataparser),基于待打印數(shù)據(jù)、預(yù)設(shè)的打印模版和打印參數(shù)信息,生成可打印數(shù)據(jù)流,再通過調(diào)用虛擬上下文接口17將該可打印數(shù)據(jù)流打印成小票。這里的打印參數(shù)信息可以是預(yù)設(shè)的,也可以是通過配置管理單元14配置的。
作為一種優(yōu)選的實(shí)施方式,本申請(qǐng)實(shí)施例還提供了模版管理單元18來支持打印樣式的多樣化,即所述打印裝置還包括:
模版管理單元18,用于為用戶配置定制化的打印模版,其中,所述打印模版中記錄有打印小票對(duì)應(yīng)的標(biāo)簽內(nèi)容及內(nèi)容屬性信息。在具體實(shí)施中,模版管理單元18可以向用戶提供可供編輯的打印模板,用戶基于自身實(shí)際需要編輯定制化的打印模板。
數(shù)據(jù)解析器19,用于基于待打印數(shù)據(jù)、模版管理單元18配置的定制化的打印模版和配置管理單元14配置的打印參數(shù)信息,生成可打印數(shù)據(jù)流。
在具體實(shí)施中,打印進(jìn)程通過調(diào)用數(shù)據(jù)解析器19,基于待打印數(shù)據(jù)、模版管理單元18配置的定制化的打印模版、和配置管理單元14配置的打印參數(shù)信息(比如包括打印份數(shù)、打印版式等,當(dāng)然,這些打印參數(shù)也可以是默認(rèn)的),生成可打印數(shù)據(jù)流;然后,打印進(jìn)程通過調(diào)用虛擬上下文接口17,將數(shù)據(jù)解析器19生成的可打印數(shù)據(jù)流打印成小票。
在具體實(shí)施中,模版管理單元18可以使用xml語言來定義打印模版,如 下所示:
<?xmlversion="1.0"encoding="utf-8"?>
<root>
<template.id>
<textfont='w'dw='true'dh='true'bold='true'>****測(cè)試打印***</text>
<textfont='h'dw='false'dh='false'bold='false'>測(cè)試打印,如果看到這些帶你的文字信息,說明已經(jīng)成功連接該打印機(jī)!</text><br/>
<br/>
<textfont='t'dw='true'dh='false'bold='false'align='c'>淘點(diǎn)點(diǎn)</text><br/>
<cut/>自動(dòng)切紙
</template>
</root>
模板定義如下:
屬性列表:
font:字體1/2數(shù)字n,設(shè)置打印字體,目前支持1,2,大小兩種;
bold:粗體,tureflase
dw:雙倍寬
dh:雙倍高
datasrc:數(shù)據(jù)源,map<string,dataobj>datasrc;datasrc[orderitem_name]
align:對(duì)齊方式,left,center,right
padding:對(duì)齊像素
標(biāo)簽列表:
<template/>模板根節(jié)點(diǎn),可設(shè)置屬性包括id
<text/>輸出文本內(nèi)容,可設(shè)置屬性:font,bold,dw,dh,datasrc,align,padding,默認(rèn)是不換行
<list/>列表內(nèi)容,可包含子節(jié)點(diǎn)datasrc
<blankline/>空行,可設(shè)置屬性font
<br/>換行
<tr/>tab節(jié)點(diǎn)
除上述單元外,本申請(qǐng)實(shí)施例提供的打印裝置中還可以包括平臺(tái)開發(fā)工具包(platformsdk)20,其中包含供各種打印上下文調(diào)用的軟件代碼。平臺(tái)應(yīng)用編程接口(platformapi)21,用于提供執(zhí)行打印任務(wù)的操作系統(tǒng)支持。
如圖2所示,為打印出的小票示意圖。圖中,虛線框內(nèi)的信息為打印任務(wù)中指示的待打印數(shù)據(jù),其它如點(diǎn)菜單、序號(hào)、點(diǎn)菜時(shí)間、買家、電話、訂單編號(hào)、小計(jì)、共計(jì)等字樣、及空格、換行等為標(biāo)簽內(nèi)容,圖中顯示的字體類型、字體大小、對(duì)齊方式等為屬性信息。
基于上述打印裝置,本申請(qǐng)實(shí)施例中提供了應(yīng)用上述打印裝置進(jìn)行打印的打印方法,具體實(shí)施與上述描述重復(fù)之處不再贅述。
如圖3所示,為本申請(qǐng)實(shí)施例提供的打印方法流程圖,包括以下步驟:
s301:在獲取打印任務(wù)后,通過調(diào)用打印上下文工廠,從打印上下文庫(kù)中獲取配置管理單元保存的打印設(shè)備信息所對(duì)應(yīng)的打印上下文,并將其寫入虛擬上下文接口;其中,所述打印上下文庫(kù)中存儲(chǔ)有對(duì)應(yīng)不同打印設(shè)備的打印上下文;所述配置管理單元保存的打印設(shè)備信息,為用戶基于該配置管理單元提供的打印設(shè)備配置接口配置的;
s302:通過調(diào)用虛擬上下文接口,將所述打印任務(wù)指示的待打印數(shù)據(jù)打印成小票。
可選地,所述方法還包括:
通過模版管理單元為用戶配置定制化的打印模版,其中,所述打印模版中記錄有打印小票對(duì)應(yīng)的標(biāo)簽內(nèi)容及內(nèi)容屬性信息;
所述通過調(diào)用虛擬上下文接口,將所述待打印數(shù)據(jù)打印成小票,包括:
通過調(diào)用虛擬上下文接口,將所述待打印數(shù)據(jù)基于所述定制化的打印模板打印成小票。
可選地,所述通過調(diào)用虛擬上下文接口,將所述待打印數(shù)據(jù)基于所述定制 化的打印模板打印成小票,包括:
通過調(diào)用數(shù)據(jù)解析器,基于所述待打印數(shù)據(jù)和所述定制化的打印模版,生成可打印數(shù)據(jù)流;
通過調(diào)用所述虛擬上下文接口,將所述數(shù)據(jù)解析器生成的可打印數(shù)據(jù)流打印成小票。
可選地,所述通過調(diào)用數(shù)據(jù)解析器,基于所述待打印數(shù)據(jù)和所述模版管理單元配置的定制化的打印模版,生成可打印數(shù)據(jù)流,包括:
通過調(diào)用數(shù)據(jù)解析器,基于所述待打印數(shù)據(jù)、所述模版管理單元配置的定制化的打印模版、和所述配置管理單元保存的打印參數(shù)信息,生成可打印數(shù)據(jù)流。
可選地,根據(jù)以下步驟獲取所述打印任務(wù):
在通過打印用戶界面ui接收到用戶的打印指示后,通過調(diào)用打印接口,基于所述打印指示生成打印任務(wù),并將生成的打印任務(wù)加入打印線程池;
從所述打印線程池中調(diào)取當(dāng)前待處理的打印任務(wù)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、裝置(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。