.

iT邦幫忙

1

是否 IE 11 從前端透過 JS 找到條碼印表機,同時發送指令後,印出條碼呢?

  • 分享至 

  • xImage

各位IT的大佬前輩好,小弟又來發問了...
想請教是否有辦法透過 前端(JavaScript)來實作條碼列印的功能呢?
例如刷了某一個條碼,經判斷後為"123456789"的號碼
此時條碼機就能夠列印出 "123456789"的一維條碼

不瞞各位大佬... 我本來很開心地想說自己做出來了
但結果是我做在後端,當然我做的這個部分也沒有特別艱深的技術
而系統必須透過 tomcat 架設,沒想到架設起來後才發現
從在網頁上刷了條碼之後,列印都會往架設的tomcat 所在的主機的條碼機跑...
應該是要刷了條碼之後,往使用這個tomcat 所架設起來的網頁所在的主機端的機器跑才對...
這就是我技術未深但卻又做在後端的後果...
試了很多方法還是碰壁,因此希望往上大佬們能夠給我一些建議...

有想要嘗試在前端透過object classid 的方式來做,但目前連classid 都還要不到...
因此這部分的嘗試只能暫緩
也有想過透過在使用者端直接建立某個資料文件,將TSPL 或EZPL 指令寫進去後
透過cmd 下 copy 或 type 指令
但好玩的是我就算不透過程式,直接下也沒有印條碼... 整個很尷尬...

114/01/24 更新!
感謝 DennisLu 大佬寶貴的建議
目前已在前端 透過JS 寫入使用者端資料夾底下並建立文字檔案內容
然後透過 C# WinForm 寫一個監聽資料夾底下文字檔案的一個執行檔
成功在使用者使用網頁刷取條碼的同時,於使用者端接上的條碼印表機同步列印出條碼
(此過程為在已預先使用者端執行著 exe 檔,Tomcat 也已在某一主機架設網頁)
後續還有針對印出中文字的部分透過工具下載至條碼印表機裡... 這又是另一個故事了...
總之希望大家教學相長,也能夠幫助到跟我遇到同樣難題的人

.
圖片
  直播研討會

1 個回答

2
DennisLu
iT邦好手 1 級 ‧ 2025-01-10 18:02:54
最佳解答

方案一:
寫一個agent在Client端背景運行(常駐程式或背景服務),
網頁程式送websocket把條碼內容給Client端的agent,
agent負責接websocket跟將內容送列印給本機條碼機。

方案二:(區網限定)
找看看有沒有支援網路介面的條碼機,
將列印指令都透過區域網路送到網路介面條碼機,
至於後端主機送指令給網路條碼機也行,反正是透過網路有通就好,
哪裡有網路點,條碼機就可以放在該處。
就不用寫方案一的websocket跟agent。

方案二也可合併方案一的agent的方式,agent本身可以設計支援本機條碼或送網路介面條碼,對環境更靈活。

看更多先前的回應...收起先前的回應...

感謝大佬的建議!
想再請教,您說的方案一的部分是否像是我可能透過 C# Windows Form 來寫一個exe 檔執行著,用來接收網頁傳來的Websocket,然後再傳到本機條碼機呢?

另外想再請問,JavaScript是否真的沒有辦法直接傳指令到使用者端的條碼機上呢? 因為我有看到過列印A4那一方面就可以用JavaScript來實現,目前我也確實有抓到使用者端的條碼印表機名稱,透過 ActiveX 物件,因為系統比較老舊...是個必須只能用IE才能開啟的網頁系統/images/emoticon/emoticon06.gif

walljack1 iT邦新手 5 級 ‧ 2025-01-11 00:05:02 檢舉

前端是使用者介面,資料一定是來自後端,但是後端並沒有限制一定要使用那種語言你可以選擇python搭fastapi,c#走soket然後前端用socketio , nodejs 搭express, 還有很多其他做法,以上是前後端分離。 如果不想要這種方式當然也有前後端都是在同一個專案下的方式像是nextjs或nuxtjs的全端框架可以達到你所說的。

感謝 walljack1 大佬的建議!
目前條碼需要的資訊在一開始載入畫面時,已經都從都從後端透過資料庫撈出,只是現在尷尬的是,我必須在當前這個較舊系統的框架下去寫,雖然也想過用其他的做法,但這邊不好實作...
因此在閱讀 DennisLu 大佬建議後,才想詢問請教是否有可以從JavaScript實作的方法...
確實現在系統的的框架下,前面的前輩有實作出列印A4紙張的部分並且也是透過JavaScript

walljack1 iT邦新手 5 級 ‧ 2025-01-12 11:44:36 檢舉

應該這麼說好了,一個前端它不一定只對應一個後端它可以好幾個後端並行,資料從後端來的意思是說不管你是要控制某個設備或操作某個資料庫都要從後端進行,也就是說你完全可以用你擅長的語言寫出新的後端既可以利用api的方式取到前端調碼也能將其資訊傳到列印機去。

感謝您的回覆!
但是目前我這邊的情況是,我透過api 的方式取到前端條碼傳到後端,也確實可以印出條碼,可是測試的結果是,當tomcat 運作起來後,我在非執行tomcat 的電腦(使用者)開啟我的網頁,刷取條碼列印,條碼並不會從我使用者端的條碼機印出,而是從tomcat 的電腦主機印出...
有些尷尬/images/emoticon/emoticon02.gif

froce iT邦大師 1 級 ‧ 2025-01-13 10:44:11 檢舉

條碼並不會從我使用者端的條碼機印出

這很正常啊...你要控制使用者的列印請用winform等不用透過瀏覽器,具有直接控制使用者硬體的框架去寫。
透過瀏覽器就是呼叫瀏覽器的列印介面而已。
要不然就得寫agent,但你都寫agent了幹嘛不直接寫就好...

感謝 froce 大佬的回覆,這樣我了解了!

其實再給你一些觀念好了。
前端語言一般很難能直接去控制設備的。(是有限制的)
這是因為基於「本機安全原則」

畢竟所謂的前端語言,是運行在客戶的電腦上的一個程式碼。
但程式碼其實是從你的伺服器上輸出到瀏覽器使用。
所以....並不能允許任意不合規則的取用。

像是「列印」這個功能。
可以呼叫原本瀏覽器的列印功能,這是允許的。因為呼叫這個功能。其主要控制權還是會回到用戶身上。
但無法去指定某個設備去列印。這是不允許的。

了解了,這樣我更清楚!
感謝 ㊣浩瀚星空㊣ 大佬的建議與回覆!
如果說使用瀏覽器這個列印功能是沒問題,但是必須是要自動列印,且要寫自動選擇對印的印表機,因此思考過後來還是採用DennisLu 大佬的做法

我要發表回答

立即登入回答