翻譯|使用教程|編輯:楊鵬連|2021-03-31 09:39:34.670|閱讀 221 次
概述:本文分享了如何將Dynamic Web TWAIN SDK集成到Polymer項(xiàng)目中,以便在Web瀏覽器中掃描文檔。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Dynamic Web TWAIN是一個(gè)專為Web應(yīng)用程序設(shè)計(jì)的TWAIN掃描識(shí)別控件。你只需在TWAIN接口寫幾行代碼,就可以用兼容TWAIN的掃描儀掃描文檔或從數(shù)碼相機(jī)/采集卡中獲取圖像。然后用戶可以編輯圖像并將圖像保存為多種格式,用戶可保存圖像到遠(yuǎn)程數(shù)據(jù)庫或者SharePoint。該TWAIN控件還支持上傳和處理本地圖像。
點(diǎn)擊下載Dynamic Web TWAIN正式版
過去,Dynamic Web TWAIN僅支持HTML DOM元素。某些基于Shadow DOM的Web框架(例如Polymer)無法與Dynamic Web TWAIN一起使用。從版本16.1開始,Dynamic Web TWAIN與Shadow DOM完全兼容。本文分享了如何將Dynamic Web TWAIN SDK集成到Polymer項(xiàng)目中,以便在Web瀏覽器中掃描文檔。
動(dòng)態(tài)Web TWAIN快速入門
<!DOCTYPE html> <html> <head> <title>Hello World</title> <script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js"></script> <script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js"></script> </head> <body> <div id="dwtcontrolContainer" ></div> <input type="button" value="Scan" onclick="AcquireImage();" /> <script type="text/javascript"> Dynamsoft.WebTwainEnv.ProductKey = "LICENSE-KEY"; function AcquireImage() { var DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer'); if (DWObject) { DWObject.SelectSource(function () { var OnAcquireImageSuccess = OnAcquireImageFailure = function () { DWObject.CloseSource(); }; DWObject.OpenSource(); DWObject.IfDisableSourceAfterAcquire = true; DWObject.AcquireImage(OnAcquireImageSuccess, OnAcquireImageFailure); }, function () { console.log('SelectSource failed!'); }); } } </script> </body> </html>通過這些步驟,完成了一個(gè)簡單的Web文檔管理應(yīng)用程序。如果沒有網(wǎng)絡(luò)服務(wù)器,我們可以通過雙擊HTML文件來立即運(yùn)行網(wǎng)絡(luò)文檔掃描器應(yīng)用程序。
要使應(yīng)用正常運(yùn)行,需要有效的許可證密鑰。獲得30天的免費(fèi)試用許可證并更新代碼:
Dynamsoft.WebTwainEnv.ProductKey = "LICENSE-KEY";用于掃描文檔的聚合物項(xiàng)目
安裝Polymer CLI:
npm i -g polymer-cli之后,我們可以使用模板初始化Polymer項(xiàng)目:
mkdir polymer-document-scan cd polymer-document-scan polymer init polymer-3-starter-kit npm start
現(xiàn)在,讓我們通過在src / my-view.js中的HTML模板中添加Div元素和Button元素來修改默認(rèn)UI :
class MyView1 extends PolymerElement { static get template() { return html` <style include="shared-styles"> :host { display: block; padding: 10px; } </style> <div class="card"> <div id="dwtcontrolContainer"></div> <button on-click="handleClick">scan</button> </div> `; } handleClick() { if (DWObject) { } } }
var DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');原因是找不到元素。要調(diào)查此問題,請打開開發(fā)人員控制臺(tái)。
開發(fā)者控制臺(tái)顯示Div元素是Shadow DOM的子元素。這是獲取Shadow DOM元素的JS代碼:
document.querySelector("body > my-app").shadowRoot.querySelector("app-drawer-layout > app-header-layout > iron-pages > my-view1").shadowRoot.querySelector("#dwtcontrolContainer")該代碼可以簡化如下:
this.shadowRoot.querySelector('#dwtcontrolContainer');由于Dynamic Web TWAIN支持Shadow DOM,因此我們可以使用以下bind()方法輕松地使用Shadow DOM元素初始化Dynamic Web TWAIN對象:
ready() { super.ready(); // TODO: initialization this.initializeDWT(); } initializeDWT() { // Dynamsoft.WebTwainEnv.ProductKey = "LICENSE-KEY"; Dynamsoft.WebTwainEnv.CreateDWTObjectEx({ WebTwainId: 'Viewer' }, (obj) => { this.dwtObj = obj; obj.Viewer.bind(this.shadowRoot.querySelector('#dwtcontrolContainer')); obj.Viewer.width = 560; obj.Viewer.height = 600; obj.Viewer.show(); var count = obj.SourceCount; for (var i = 0; i < count; i++) { this.shadowRoot.querySelector('#source').options.add(new Option(obj.GetSourceNameItems(i), i)); } }, function (e) { console.log(e) }); }我們創(chuàng)建一個(gè)單擊事件以觸發(fā)文檔掃描。
handleClick() { var obj = this.dwtObj; if (obj) { var onSuccess, onFailure; onSuccess = onFailure = function () { obj.CloseSource(); }; obj.SelectSourceByIndex(this.shadowRoot.querySelector('#source').selectedIndex); obj.OpenSource(); obj.IfDisableSourceAfterAcquire = true; obj.AcquireImage(onSuccess, onFailure); } }最后,Polymer中實(shí)現(xiàn)的Web文檔掃描應(yīng)用程序可以成功運(yùn)行。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: