一種稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及稅控技術(shù)領(lǐng)域,具體而言,涉及一種稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方 法。
【背景技術(shù)】
[0002] 在稅控系統(tǒng)中,采用模版打印是常用的一種技術(shù),使用者將構(gòu)建的指定格式的數(shù) 據(jù)和發(fā)票打印模板傳送給打印引擎,打印引擎解析發(fā)票打印模版,并將打印數(shù)據(jù)傳送到專 用的發(fā)票打印機(jī)進(jìn)行打印。將發(fā)票打印模板的數(shù)據(jù)傳輸格式固定標(biāo)準(zhǔn)化能夠降低打印模板 與打印數(shù)據(jù)之間的冗余度,從而降低數(shù)據(jù)格式化過程的復(fù)雜度和出錯(cuò)率,是發(fā)票打印的發(fā) 展方向。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明提供一種稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法,用以解決打印數(shù)據(jù)與打印模 板之間的匹配問題。
[0004] 為達(dá)到上述目的,本發(fā)明提供了一種稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法,包括以 下步驟:
[0005] 構(gòu)建打印模板,在打印模板中建立每個(gè)節(jié)點(diǎn)與其鍵值的一一映射關(guān)系;
[0006] 構(gòu)建數(shù)據(jù)文件,其中數(shù)據(jù)文件包含打印模板中每個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的 元素的值;
[0007] 將數(shù)據(jù)文件發(fā)送至數(shù)據(jù)端,數(shù)據(jù)端根據(jù)對(duì)應(yīng)關(guān)系將數(shù)據(jù)文件構(gòu)建成配對(duì)數(shù)據(jù),其 中每個(gè)配對(duì)數(shù)據(jù)包含一個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值;
[0008] 將配對(duì)數(shù)據(jù)添加至數(shù)據(jù)字典,生成一個(gè)數(shù)據(jù)包;
[0009] 將打印模板的路徑和數(shù)據(jù)包傳遞至打印引擎,打印引擎中的打印函數(shù)依序解析打 印模板中的每個(gè)節(jié)點(diǎn),當(dāng)節(jié)點(diǎn)的鍵值不為空時(shí),打印函數(shù)將節(jié)點(diǎn)的鍵值在數(shù)據(jù)包中進(jìn)行檢 索匹配得到與其對(duì)應(yīng)的配對(duì)數(shù)據(jù);
[0010] 提取配對(duì)數(shù)據(jù)中包含的與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值,根據(jù)發(fā)票打印模板中該節(jié)點(diǎn)的 解析信息將與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值打印在發(fā)票上。
[0011] 進(jìn)一步的,當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為文字或數(shù)據(jù)時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的元素的值為 該文字或數(shù)據(jù)。
[0012] 進(jìn)一步的,當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為圖片時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的元素的值為該圖片 的Base64編碼(一種常見的用于傳輸Sbit字節(jié)代碼的編碼方式)。
[0013] 為達(dá)到上述目的,本發(fā)明還提供一種稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法,包括以 下步驟:
[0014] 構(gòu)建打印模板,在打印模板中建立每個(gè)節(jié)點(diǎn)與其鍵值的一一映射關(guān)系;
[0015] 構(gòu)建數(shù)據(jù)文件,其中數(shù)據(jù)文件包含打印模板中每個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的 元素的值;
[0016] 根據(jù)打印模板和所述數(shù)據(jù)文件構(gòu)建xml文件(可擴(kuò)展標(biāo)記語言),其中xml文件包 含打印模板中每個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值;
[0017] 將xml文件發(fā)送至打印引擎的數(shù)據(jù)解析函數(shù),數(shù)據(jù)解析函數(shù)根據(jù)對(duì)應(yīng)關(guān)系將xml文件構(gòu)建成配對(duì)數(shù)據(jù),其中每個(gè)配對(duì)數(shù)據(jù)包含一個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的元素的 值;
[0018] 將配對(duì)數(shù)據(jù)添加至數(shù)據(jù)字典,生成一個(gè)數(shù)據(jù)包;
[0019] 將打印模板的路徑和數(shù)據(jù)包傳遞至打印引擎,打印引擎中的打印函數(shù)依序解析打 印模板中的每個(gè)節(jié)點(diǎn),當(dāng)節(jié)點(diǎn)的鍵值不為空時(shí),打印函數(shù)將節(jié)點(diǎn)的鍵值在數(shù)據(jù)包中進(jìn)行檢 索匹配得到與其對(duì)應(yīng)的配對(duì)數(shù)據(jù);
[0020] 提取配對(duì)數(shù)據(jù)中包含的與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值,根據(jù)發(fā)票打印模板中該節(jié)點(diǎn)的 解析信息將與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值打印在發(fā)票上。
[0021] 進(jìn)一步的,xml文件包含兩級(jí)標(biāo)簽,其中一級(jí)標(biāo)簽為文件標(biāo)簽,包含一用于指示 xml文件起始的文件標(biāo)簽頭,二級(jí)標(biāo)簽為節(jié)點(diǎn)標(biāo)簽,每個(gè)節(jié)點(diǎn)標(biāo)簽包含一用于指示節(jié)點(diǎn)起始 的節(jié)點(diǎn)標(biāo)簽頭,節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值存放在對(duì)應(yīng)的節(jié)點(diǎn)標(biāo)簽中。
[0022] 進(jìn)一步的,節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為以下任意一種:文字、數(shù)據(jù)、圖片、表格、選中 框。
[0023] 進(jìn)一步的,當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為文字或數(shù)據(jù)時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的元素的值為 所述文字或數(shù)據(jù)。
[0024] 進(jìn)一步的,當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為圖片時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的元素的值為所述圖 片的Base64編碼。
[0025] 進(jìn)一步的,當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為表格時(shí),該節(jié)點(diǎn)包括多個(gè)行,每個(gè)行包括多 個(gè)列節(jié)點(diǎn),每個(gè)列節(jié)點(diǎn)的鍵值與該節(jié)點(diǎn)的鍵值一致。
[0026] 進(jìn)一步的,當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為選中框時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的元素的值為"真" 或"假",其中,當(dāng)所述選中框被選中時(shí),節(jié)點(diǎn)對(duì)應(yīng)的元素的值為"真",當(dāng)所述選中框未被選 中時(shí),節(jié)點(diǎn)對(duì)應(yīng)的元素的值為"假"。
[0027] 本發(fā)明提供的稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法將打印模板的數(shù)據(jù)傳輸格式標(biāo) 準(zhǔn)化,提供了標(biāo)準(zhǔn)化的數(shù)據(jù)傳輸接口,解決了打印數(shù)據(jù)與打印模板之間的匹配問題,方便開 發(fā)或第三方調(diào)用。
【附圖說明】
[0028] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0029] 圖1為本發(fā)明一個(gè)實(shí)施例的稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法流程圖;
[0030] 圖2為本發(fā)明另一個(gè)實(shí)施例稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法流程圖。
【具體實(shí)施方式】
[0031] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0032] 圖1為本發(fā)明一個(gè)實(shí)施例的稅控系統(tǒng)中發(fā)票打印數(shù)據(jù)綁定方法流程圖,該實(shí)施例 適用于開票系統(tǒng)對(duì)內(nèi)存有讀寫權(quán)限的情況,如圖所示,該方法包括以下步驟:
[0033] SllO :構(gòu)建打印模板,在打印模板中建立每個(gè)節(jié)點(diǎn)與其鍵值的一一映射關(guān)系;
[0034] 其中,節(jié)點(diǎn)對(duì)應(yīng)的元素的類型可為文字、數(shù)據(jù)或圖片,打印模板中的每個(gè)節(jié)點(diǎn)具 有唯一的鍵值,通過該鍵值可以唯一確定一個(gè)節(jié)點(diǎn),同時(shí)打印模板中還包含有節(jié)點(diǎn)的解析 信息,節(jié)點(diǎn)的解析信息包括節(jié)點(diǎn)對(duì)應(yīng)的元素的數(shù)據(jù)類型、在發(fā)票票面的位置,占據(jù)區(qū)域的長 度、寬度、打印時(shí)采用的線型及字體、水平及垂直方向的對(duì)齊方式等。
[0035] S120 :構(gòu)建數(shù)據(jù)文件,其中數(shù)據(jù)文件包含打印模板中每個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn) 對(duì)應(yīng)的元素的值;
[0036] 當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為文字或數(shù)據(jù)時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的元素的值為該文字或數(shù) 據(jù);當(dāng)節(jié)點(diǎn)對(duì)應(yīng)的元素的類型為圖片時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的元素的值為該圖片的Base64編碼。
[0037] S130 :將數(shù)據(jù)文件發(fā)送至數(shù)據(jù)端,數(shù)據(jù)端根據(jù)對(duì)應(yīng)關(guān)系將數(shù)據(jù)文件構(gòu)建成配對(duì)數(shù) 據(jù),其中每個(gè)配對(duì)數(shù)據(jù)包含一個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值;
[0038] 數(shù)據(jù)端將數(shù)據(jù)文件中包含的每個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值構(gòu)建成 (key,value)格式的配對(duì)數(shù)據(jù),其中key為節(jié)點(diǎn)的鍵值,value為與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值。
[0039] S140 :將配對(duì)數(shù)據(jù)添加至數(shù)據(jù)字典,生成一個(gè)數(shù)據(jù)包;
[0040] 每一節(jié)點(diǎn)對(duì)應(yīng)生成的(key,value)格式的配對(duì)數(shù)據(jù)均添加至數(shù)據(jù)字典中,生成的 數(shù)據(jù)包含了打印模板中每個(gè)節(jié)點(diǎn)的鍵值及與該節(jié)點(diǎn)對(duì)應(yīng)的元素的值。
[0041] S150 :將打印模板的路徑和數(shù)據(jù)包傳遞至打印引擎,打印引擎中的打印函數(shù)依序 解析打印模板中的每個(gè)節(jié)點(diǎn),當(dāng)節(jié)點(diǎn)的鍵值不為空時(shí),打印函數(shù)將節(jié)點(diǎn)的鍵值在數(shù)據(jù)包中 進(jìn)行檢索匹配得到與其對(duì)應(yīng)的配對(duì)數(shù)據(jù);
[0042] 當(dāng)節(jié)點(diǎn)的鍵值key不為空時(shí),打印函數(shù)將該key值在數(shù)據(jù)包中進(jìn)行檢索匹配得到 與其對(duì)應(yīng)的配對(duì)數(shù)據(jù)(key,value),當(dāng)節(jié)點(diǎn)的鍵值key為空時(shí),打印函數(shù)跳過該節(jié)點(diǎn),進(jìn)行 下一個(gè)節(jié)點(diǎn)的解析。
[0043] S160:提取配對(duì)數(shù)據(jù)中包含的