提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吉伟伟|2024-11-29 10:14:38.430|阅读 3 次
概述:在本教程中,我们将探讨如何利用Dynamic Web TWAIN SDK的强大功能来创建基于 React 的文档扫描 Web 应用程序。本指南将引导您完成设置React项目、集成 SDK 以及实现功能的过程,使用户能够在用户友好的 Web 界面中扫描、上传和管理文档。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
在当今的数字时代,高效的文档管理对于企业和个人都至关重要。将文档扫描功能直接集成到 Web 应用程序中可以显著简化工作流程,使用户能够轻松地数字化和管理文档。在本教程中,我们将探讨如何利用Dynamic Web TWAIN SDK的强大功能来创建基于 React 的文档扫描 Web 应用程序。本指南将引导您完成设置React项目、集成 SDK 以及实现功能的过程,使用户能够在用户友好的 Web 界面中扫描、上传和管理文档。
先决条件
构建 React 文档扫描 Web 应用程序的步骤
在以下部分中,我们将首先创建 React 项目的基础结构,然后无缝集成动态 Web TWAIN SDK 以实现强大的文档扫描和管理功能。
要创建新的 React 项目,请选择以下方法之一:
npm install -g create-react-app create-react-app document-scan
npx create-react-app document-scan
yarn create react-app document-scan
将文档扫描与 Dynamic Web TWAIN SDK 集成
首先,安装所需的软件包:
npm install dwt@latest npm install @babel/core @babel/preset-env npm i ncp -g
Dynamic Web TWAIN SDK 包含用于扫描仪通信的平台特定服务应用程序和 JavaScript 库,位于node_modules/dwt/dist文件夹中。使用ncp这些资源将这些资源复制到public您的 React 项目的文件夹中:
ncp node_modules/dwt/dist public/dwt-resources
接下来,在中创建一个 React 组件DynamsoftSDK.js:
import React from 'react'; import Dynamsoft from 'dwt'; export default class DWT extends React.Component { constructor(props) { super(props); this.state = { sourceList: [], scanners: [], currentScanner: "Looking for devices.." }; this.selectRef = React.createRef(); } DWObject = null; containerId = 'dwtcontrolContainer'; width = "100%"; height = "600"; componentDidMount() { Dynamsoft.DWT.RegisterEvent('OnWebTwainReady', () => { this.DWObject = Dynamsoft.DWT.GetWebTwain(this.containerId); if (this.DWObject) { this.DWObject.GetDevicesAsync(Dynamsoft.DWT.EnumDWT_DeviceType.TWAINSCANNER | Dynamsoft.DWT.EnumDWT_DeviceType.TWAINX64SCANNER).then((sources) => { const sourceNames = sources.map(source => source.displayName); this.setState({ scanners: sourceNames, sourceList: sources }); }).catch((error) => { console.error("Error fetching devices:", error); }); } }); this.loadDWT(); } loadDWT() { Dynamsoft.DWT.ResourcesPath = "dwt-resources"; Dynamsoft.DWT.ProductKey = 'DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAxLTE2NDk4Mjk3OTI2MzUiLCJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInNlc3Npb25QYXNzd29yZCI6IndTcGR6Vm05WDJrcEQ5YUoifQ=='; Dynamsoft.DWT.Containers = [{ ContainerId: this.containerId, Width: this.width, Height: this.height }]; Dynamsoft.DWT.Load(); } onSourceChange(value) { this.setState({ currentScanner: value }); } getSelectedIndex = () => { const selectedIndex = this.selectRef.current.selectedIndex; console.log("Selected Index:", selectedIndex); return selectedIndex } acquireImage() { const selectedIndex = this.selectRef.current.selectedIndex; if (!this.state.sourceList || this.state.sourceList.length === 0) { alert("No scanner detected. Please connect a scanner and try again."); return; } this.DWObject.IfShowUI = false; this.DWObject.SelectDeviceAsync(this.state.sourceList[selectedIndex]).then(() => { return this.DWObject.OpenSourceAsync() }).then(() => { return this.DWObject.AcquireImageAsync({ IfDisableSourceAfterAcquire: true }) }).then(() => { if (this.DWObject) { this.DWObject.CloseSource(); } }) .catch( (e) => { console.error(e) } ) } loadImagesOrPDFs() { this.DWObject.IfShowFileDialog = true; this.DWObject.Addon.PDF.SetResolution(200); this.DWObject.Addon.PDF.SetConvertMode(1/*Dynamsoft.DWT.EnumDWT_ConvertMode.CM_RENDERALL*/); this.DWObject.LoadImageEx("", 5 /*Dynamsoft.DWT.EnumDWT_ImageType.IT_ALL*/, () => { }, (errorCode, errorString) => alert(errorString)); } render() { return ( <div style={{ width: "30%", margin: "0 auto" }}> <select ref={this.selectRef} style={{ width: "100%" }} tabIndex="1" value={this.state.currentScanner} onChange={(e) => this.onSourceChange(e.target.value)}> { this.state.scanners.length > 0 ? this.state.scanners.map((_name, _index) => <option value={_name} key={_index}>{_name}</option> ) : <option value="Looking for devices..">Looking for devices..</option> } </select> <button tabIndex="2" style={{ marginRight: "4%", width: "48%" }} onClick={() => this.acquireImage()} disabled={this.state.scanners.length > 0 ? "" : "disabled"} >Scan</button> <button tabIndex="3" style={{ margin: "2% 0", width: "48%" }} onClick={() => this.loadImagesOrPDFs()} disabled={this.state.scanners.length > 0 ? "" : "disabled"} >Load</button> <div id={this.containerId}></div> </div > ); } }
解释
将组件集成到 App.js
一旦你的组件准备好了,就将其集成到App.js:
import logo from './logo.svg'; import DWTLogo from './icon-dwt.svg'; import DynamsoftLogo from './logo-dynamsoft-white-159X39.svg'; import './App.css'; import DWT from './DynamsoftSDK'; function App() { return ( <div className="App"> <header className="App-header"> <a href="//www.dynamsoft.com/web-twain/overview/" target="_blank" rel="noopener noreferrer" ><img src={DWTLogo} className="dwt-logo" alt="Dynamic Web TWAIN Logo" /></a> <div style={{ width: "10px" }}></div> <a href="//reactjs.org/" target="_blank" rel="noopener noreferrer" ><img src={logo} className="App-logo" alt="logo" /></a> <div style={{ width: "18%" }}></div> <a href="//www.dynamsoft.com" target="_blank" rel="noopener noreferrer" ><img src={DynamsoftLogo} className="ds-logo" alt="Dynamsoft Logo" /></a> </header> <main className="App-main"> <DWT productKey="LICENSE-KEY" /> </main> </div> ); } export default App;
运行应用程序
现在一切都已设置完毕,请使用以下命令运行该应用程序:
npm start
这将在您的默认 Web 浏览器中启动该应用程序,从而可以直接在您的 React 应用程序中扫描和管理文档。
获取更多产品资讯或产品试用及优惠,请联系
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
Dynamic Web TWAIN 应用于Web应用程序的TWAIN扫描识别工具,支持所有主流浏览器
Dynamsoft Barcode ReaderDynamsoft Barcode Reader SDK是一款多功能的条码读取控件。
Dynamsoft Camera SDK为你的应用程序提供支持,将iPhone或Android手机变成文档扫描仪
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢