js前臺調用lodop打印

lodop簡單介紹

lodop的打印功能已經很是強大,也在帶web端的圖形界面,能夠供用戶使用。使用js在前臺調用lodop打印,通常分爲兩種方法:css

1:特殊的指令打印,這種打印方式,是採用的與js無關的一些特殊指令,說實在的,不適合咱們使用。這個我的以爲只使用於你的web端圖形界面使用了lodop自帶的圖形界面。用這個功能作固定模板還好,但若是要作一個自定義的圖形界html

  面去定製打印的模板,不是明智之舉。前端

2:採用html+css,將整個html+css代碼傳給打印機,進行打印。很適合咱們的使用與維護。開發起來也很快,咱們只須要將主要精力放在html上,對其進行適配就好。git

lodop官方網站已經提供了不少的在線樣例,能夠去看看:lodop官網地址github

使用背景

公司產品想要一個有本身頁面本身風格的web端打印圖形界面。就像是富文本編譯器那樣,開發給用戶,讓用戶本身去進行配置打印的模板,後臺保存模板,在其餘地方調用打印功能時,web

將模板信息塞入到打印機內,造成打印。成型的做品以下。瀏覽器

 圖中的字段能夠任意拖動,放在背景頁面的任何位置,也能夠對其進行富文本的編輯。最後保存時,將lodop指令保存到後臺,打印時調用出來。網站

上圖使用的是lodop特殊指令進行打印的,非html,至於緣由,就很少說了,反正當時是沒得選擇。若是還有得選,必定會選擇用html打印方式,無論效率方面,仍是適配.net

方面,都比用特殊指令打印舒服的太多。並且,做爲一個前端開發者,html打印的方式可使咱們專一於頁面的操做,後臺進行配合,只須要提供一個模板增刪改查的接口就好,插件

仍是很方便的。

html打印在線樣例

github地址:https://github.com/namedyouZai/lodop-print-html-demo

該案例使用了html打印。簡單的教程裏包括了打印、打印預覽、打印機列表、指定打印機等接口。做爲一個小demo 仍是足夠的。

另外在使用以前,別忘了在上面的官網地址裏找到符合本身電腦的打印服務進行安裝,這樣能夠直接看到個人在線樣例,並執行打印功能。

爲何可使用js調用電腦本地的打印機服務?

根據瀏覽器規則,js是不予許直接訪問本地電腦文件的,可是lodop實現了一個橋樑的做用,也就是如今的clodop。這個插件在本地起了一個服務,js將命令發送給clodop,而後經過clodop發送調用打印機。下載並運行clodop你能夠看到本地任務欄裏多出這個圖片,也就能理解了。

正文開始

lodop的打印指令有如下兩種模式:

1:html形式的打印

  這種打印能夠將html頁面做爲字符串保存下來,給到打印機進行打印

2:特殊指令的打印

  這種利用譬如:LODOP.SET_PRINT_STYLEA等指令,傳給打印機 進行打印

而咱們的系統,由於考慮到是從老系統lodop的特殊指令轉換過來的,因此不得以採用了第二種方法,也是磕磕絆絆實現瞭如今的結果,可是問題仍是比較多的,畢竟涉及到軟件調用硬件,而且這個硬件種類較多,還不會去兼容這個軟件,只能軟件去兼容硬件,因此維護的成本仍是比較高的。

 

另外,我另一個系統內,使用的是html打印方式,能夠說是減小了不少麻煩事。UI圖以下

 

這個打印是這樣實現的:

  1. 前端技術上採用的是angualr
  2. 前臺經過雙向數據綁定,寫好模板。
  3. 從後臺獲取到模板以後,添加到前臺指定的標籤以內。
  4. 重啓模板部分angular的服務,使頁面的雙向數據綁定等功能再次生效
  5. 直接將該部分的html+css發送到打印機便可開始打印。
  6. 後臺存儲的內容就是一個html模板加上樣式。

做爲一位web端打印開發的老司機,若是你想開發出上圖樣式的web端打印,我仍是強烈建議你們採用html形式的打印。做者本人是使用過指令打印作上圖中的功能的,可是異常的痛苦不堪,具體怎麼去實現也就不說了。採用html打印的方式有點以下:

  1. 這種方式只會關注頁面是什麼樣的,最後只須要將想要打印的內容經過innerHtml就能夠取出來,不用關注用戶在過程當中進行了什麼操做。(固然這是任何一種打印都應該作到的事情)
  2. 代碼簡單,不用去拼接與解析那麼多的指令代碼,畢竟指令打印是不少的形如:LODOP.ADD_PRINT_TEXT(83,78,75,20,"寄件人姓名"); 這種代碼拼接起來的。
  3. 須要作的兼容性會比較少,由於html打印的方式,會根據打印的紙張大小進行百分比的頁面佔有率進行放大縮小,可是指令打印的可能還須要依照打印指令裏的數據去設置紙張的大小,這個實際上是不現實的,不能讓用戶去適應咱們,只能咱們去適應用戶。

 

額外須要掌握的知識

打印機的平常知識,好比如何設置打印紙張,是否正反方向打印紙張,打印紙張的位置誤差時須要對打印機或者紙張進行控制、共享打印機如何進行控制等等。雖然調用打印機服務很簡單,但由於涉及到硬件系統還有用戶的實際操做問題,平常須要解決的問題仍是很多的。最好能本公司制定出一個操做規範還有常見的打印問題解決方案以供用戶使用。

相關文章
相關標籤/搜索