基於信封套打以及批量打印的實現過程

最近須要向客戶發送一些宣傳資料,Excel列表裏面有一兩百個記錄,原本想手寫就算了,估摸着也花不了多少時間,不過寫完一個信封我就後悔了,成天敲着鍵盤,書寫的字太難看了,並且感受手仍是有點累。才第一個啊,想着後面還有那麼多,感受整我的頭都大了,只好放棄,太沒技術含量了。而後尋找有無一些套打的的軟件,不過找來找去仍是沒有滿意的,仍是本身寫一個套打的軟件好了,這個小小的仍是有點技術含量,呵呵。本篇隨筆基於這個困惑,整理了一個信封套打以及批量打印的實現過程,軟件能夠實現自動批量的信封套打,一兩百個的信封地址,也是一陣子的功夫就打印完成了,感受小有成就,並且之後就基於這個模式來批量打印信封,方便了不少。html

一、信封套打的實現思路

基於套打的處理,我在幾年前的隨筆都有一些隨筆介紹,如《Web打印的解決方案之證件套打》、《基於MVC4+EasyUI的Web開發框架經驗總結(16)--使用雲打印控件C-Lodop打印頁面或套打報關運單信息》這兩篇隨筆基本思路仍是採用打印控件C-Lodop(http://www.lodop.net/)來進行打印的,我這樣的套打小程序,最好仍是作成Winform程序比較方便,所以在Winform裏面整合網頁瀏覽就能夠實現這個控件的打印處理了。小程序

另外,咱們根據打印的地址信息,動態的生成HTML內容便可,基於這樣的理念,咱們動態生成HTML能夠考慮使用NVelocity的模板化處理技術,這個能夠參考下個人隨筆《使用NVelocity生成內容的幾種方式》進行了解,這個NVelocity用來處理模板化的內容生成仍是很是方便的。數組

前面介紹的這些內容,其實就是基於C-Lodop 和 NVelocity進行一個信封批量套打的處理實現技術。框架

這些技術都是以前研究實現過的東西,用起來應該得心應手了,也就不枉費精力去找其餘信封套打軟件了。函數

咱們先來介紹一下總體的打印效果,首先咱們要有一些特製的信封或者普通訊封,這樣才能基於這個基礎上進行套打,把郵政編碼、地址和聯繫人等信息打印上去。post

而後你須要有一個打印設備,我這裏採用了一個佳能的噴墨打印機(固然其餘的也沒問題)。測試

最後就是基於軟件的基礎上進行套打了,軟件能夠單個打印,也能夠導入Excel進行套打才能夠解決實際問題。編碼

通常是在單個打印沒問題後,進行批量打印,能夠省卻大量的時間,下面是基於這個套打軟件打印的信封,若是手寫的話,不知道寫到何年何月了。url

 

  

二、信封套打的實現過程

下面咱們來介紹這個信封套打的實現過程。.net

首先咱們先作一個測試頁面,啓動C-Lodop的設計界面,咱們往裏面添加一些信封所須要的元素,如套打的背景圖片、郵政編碼的文本、地址文本、人名稱呼等信息後,大體調整到合適的位置即完成了相關的設計,界面設計效果以下所示。

而後咱們經過獲取設計樣式下的代碼

生成代碼裏面就能夠看到具體的內容了。

有了這些信息,咱們就能夠建立一個HTML模板,而後利用NVelocity來動態生成相關的變量信息便可,HTML模板文件中的邏輯代碼(JS代碼)以下所示。

接着在咱們模板文件中的打印預覽函數編寫以下所示。

這樣就能夠實現標準格式的瀏覽了,文本顯示位置不必定和背景徹底吻合,背景只是做爲參考處理而已。

 

完成這些就基本上是大功告成了,可是咱們打印的時候,咱們須要注意在打印設置中採用的紙張,若是採用A4的卡紙寬度和自定義的卡紙寬度的設置是不一樣的,咱們建議根據信封的尺寸自定義格式設置,卡紙的位置就和信封寬度一致便可,防止信封進紙的時候晃動致使位置發生誤差。下面的是我對打印信封的用戶自定義設置對話框,採用實際的尺寸(毫米)進行設置便可。

前面介紹的是當個信封打印預覽而後進行打印,打印的按鈕事件處理代碼以下所示。

傳入相關的鍵值參數後,能夠實現相關的數據綁定,而後打開HTML後,就能夠執行相關的腳本進行信封打印了。

 

而對於批量打印,處理方式和單個打印有所差別,就是不會每一個都介入預覽操做,咱們是須要把一批對象進行打印。

那麼咱們若是要實現批量的數據打印,就須要利用JS裏面的數組操做,把對應的對象放到裏面,而後批量進行打印就能夠了。

而這個數據的生成,咱們就是利用NVelocity的模板函數進行處理便可。

完成這些,咱們就能夠傳入對應的打印集合,讓其在NVelocity模板裏面生成對應的HTML代碼,生成對應的對象加入到打印的數組裏面,從而完成批量的數據打印了。 

批量套打是在咱們確認單個打印格式吻合已有信封的位置狀況下,進行批量的打印處理。

一旦開啓批量打印,咱們的剩下的工做就是不斷的往打印機上面放置足夠的信封便可,能夠邊喝茶邊等待完成,怡然自得的了。

以上就是基於NVelocity+C-LODOP控件實現的信封套打整個思路和實現方式,對於咱們技術人來講,作一個這樣的軟件所花費的時間,比手寫幾百個信封浪費的時間更有意義,所得到的成就感也是有那麼一些的。

總之,技術就是爲生活服務。

相關文章
相關標籤/搜索