2

Coding4Fun - ASP.NET Core 整合事務機掃描功能

 2 years ago
source link: https://blog.darkthread.net/blog/scan-w-aspnetcore/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
ASP.NET Core 整合事務機掃描功能-黑暗執行緒

前情提要:前陣子,小閃光抱怨家裡的 Fuji Xerox M225dw 印表機的掃描功能只能用電腦操作,沒法由手機掃描直接下載圖檔。我心生一計,家裡的迷你家用伺服器平日閒閒沒事,都快變成冗員,何不寫個 ASP.NET Core 網站放在上面跑。研究了一下,還真找到在 CentOS 安裝事務機驅動程式進行掃描的方法,完成第一步。文章分享後,讀者 smfself 熱心分享其實 FUJIFILM 有出 App 支援手機掃描功能,不過,廠商寫的 App 怎麼比得上針對自己需求量身打造的程式呢?沒有一絲多餘功能,用最少操作步驟得到結果。於是,我的 Side-Project 繼續進行...

之所以想把這個網站寫完,是因為其中有幾項實用技巧,我想加進技能樹:

  1. 從 ASP.NET Core 操作外部程式
    當特殊需求,有現成的 .exe 或 Linux 程式可用,除非呼叫頻率很高、耗用資源較高需共用,或有特殊權限需求,否則直接呼叫外部程式是最簡單粗暴的解法,可輕鬆秒殺。
  2. 接收外部程式輸出
    程式輸出管道分為 stdout 及 stderr,如果大家有 Follow 近期文章,應該已知道如何應用。
  3. 以串流方式即時傳輸到瀏覽器
    掃描程式執行過程會有百分比數字跳動,我想將這個資訊即時同步到瀏覽器上。原本計劃用 Response.Body.FlushAsync() 實現簡易即時進度回報,恰巧因工作專案需求研究到 Server-Sent Events,感覺非適合這個單向傳輸情境,決定一試。

花了點時間,我已經寫好雛型,來看看成果:

展示影片

我是用 .NET 6 寫 ASP.NET Core 專案,操作畫面用 Razor Page + Vue.js + Bootstrap,執行掃描寫在 MVC Controller 中,呼叫 Linux 外部程式 scanimage,由 stderr 接收進度資訊、stdout 接收掃瞄 TIFF 圖檔,再用 ImageSharp 將 TIFF 轉成 JPG。

整個網站全為了專心做好掃描這件事,只有一個介面,選擇彩色灰階或黑白、設 DPI、調紙張大小,按下掃描鈕,即時顯示掃描進度,自動下載圖檔,一氣喝成,沒有半個多餘動作,效率與方便性完全輾壓廠商的 App 呀! (敝帚自珍的極致表現,噗)

專案用到的技術都已有專文分享過,加上有相同需求家裡又剛好有家用伺服器的人數理論值為零,程式部分就不花篇幅介紹了,想參考的同學可至我的 Github 專案結緣。

and has 0 comments

Comments

Be the first to post a comment

Post a comment

Comment
Name Captcha 94 - 75 =

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK