Skip to content
Pei-Tang Huang edited this page Feb 22, 2016 · 1 revision

print server

目前的作法,不知道實際列印狀況:

Application->print.js: printNative()
print.js->Web Server: 使用 Ajax\n要報表資料
Web Server->print.js: 取得報表資料
print.js->Print Server: 透過 WebSocket 送印
Print Server->print.exe: 呼叫 process
print.exe->Adobe Reader: 透過 AutoIT\n使用 Adobe DDE\n列印報表
Adobe Reader->Print Spool: 送到 Windows 列印佇列
Print Spool->Printer: 實際列印\n不過目前不會知道\n這一段的結果
Adobe Reader->print.exe: 傳送 DDE 呼叫結果
print.exe->Print Server: 將 DDE 結果轉成\nExit Code\n結束程式:\n0: 正常\n1: 沒參數\n2: 找不到 Adobe\n3: 不能叫 DDE\n3: 不能印
Print Server->print.js: 回傳成功或失敗訊息
print.js->Application: fulfill 或\nreject 請求

有空之後可以改寫 print.exe,讓它可以去查詢 Print Spool,才能真正掌握到印列狀況:

Application->print.js: printNative()
print.js->Web Server: 使用 Ajax\n要報表資料
Web Server->print.js: 取得報表資料
print.js->Print Server: 透過 WebSocket 送印
Print Server->print.exe: 呼叫 process
print.exe->Adobe Reader: 透過 AutoIT\n使用 Adobe DDE\n列印報表
Adobe Reader->Print Spool: 送到 Windows 列印佇列
Print Spool->Printer: 實際列印
Adobe Reader->print.exe: 傳送 DDE 呼叫結果
print.exe->Print Spool: 查詢佇列狀況
Print Spool-->print.exe: 確定沒有文件還在佇列中
print.exe->Print Server: 將執行結果轉成\nExit Code\n結束程式:\n0: 正常\n1: 沒參數\n2: 找不到 Adobe\n3: 不能叫 DDE\n3: 不能印
Print Server->print.js: 回傳成功或失敗訊息
print.js->Application: fulfill 或\nreject 請求

不過目前 print.exe 只是編譯過的 AutoIT 腳本,似乎沒辦法做到這麼複雜的事,可能要用 C# 重寫一次。

以上使用到 http://bramp.github.io/js-sequence-diagrams/ 語法,可以在 https://hackmd.io/s/Vykmmc7jg 看到實際的 Sequence Diagram。

Clone this wiki locally