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