该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

下载Dynamic .NET TWAIN

下载jni4net,学习里面的代码实例

在环境变量中设置好JAVA_HOME和C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe

解压JavaTwain,在dll目录中运行工程,编译出JavaTwain.dll

从jni4net中拷贝bin和lib到项目中

运行generateProxies.cmd

运行run.cmd

示例解析

C#层

在C#工程中添加引用DynamicDotNetTWAIN.dll

初始化Dynamic .NET TWAIN组件

public DotNetScanner(){ // initialize TWAIN Component try { dynamicDotNetTwain = new Dynamsoft.DotNet.TWAIN.DynamicDotNetTwain(); dynamicDotNetTwain.OnPostAllTransfers += new Dynamsoft.DotNet.TWAIN.Delegate.OnPostAllTransfersHandler(this.dynamicDotNetTwain_OnPostAllTransfers); dynamicDotNetTwain.MaxImagesInBuffer = 64; dynamicDotNetTwain.IfAppendImage = true; dynamicDotNetTwain.IfThrowException = true; dynamicDotNetTwain.IfShowUI = false; dynamicDotNetTwain.IfThrowException = true; dynamicDotNetTwain.ScanInNewProcess = true; } catch { MessageBox.Show(dynamicDotNetTwain.ErrorString); } }

创建JVM和CLR交互的接口

public interface IJavaProxy{ bool AcquireImage(int iIndex); String[] GetSources(); bool RegisterListener(INativeProxy proxy); void CloseSource();} public interface INativeProxy{ bool Notify(String message, String value);}

扫描图片,通知Java层加载

public bool AcquireImage(int iIndex){ try { //dynamicDotNetTwain.CloseSource(); bool success = dynamicDotNetTwain.SelectSourceByIndex(Convert.ToInt16(iIndex)); dynamicDotNetTwain.OpenSource(); dynamicDotNetTwain.AcquireImage(); } catch (Dynamsoft.DotNet.TWAIN.TwainException exp) { String errorstr = ""; errorstr += "Error " + exp.Code + "\r\n" + "Description: " + exp.Message + "\r\nPosition: " + exp.TargetSite + "\r\nHelp: " + exp.HelpLink + "\r\n"; MessageBox.Show(errorstr); } catch (Exception exp) { String errorstr = ""; errorstr += "ErrorMessage: " + exp.Message + "\r\n"; MessageBox.Show(errorstr); } return true;} private void dynamicDotNetTwain_OnPostAllTransfers(){ //MessageBox.Show("dynamicDotNetTwain_OnPostAllTransfers"); if (dynamicDotNetTwain.MaxImagesInBuffer < 1) { return; } Image img = dynamicDotNetTwain.GetImage(0); img = resizeImage(img, new Size(480, 640)); img.Save("twain.png"); if (listener != null) { listener.Notify("data ready", "twain.png"); }}

Java层

加载JavaTwain.j4n.dll

private void initTWAIN() { try { Bridge.init(); Bridge.LoadAndRegisterAssemblyFrom(new java.io.File("JavaTwain.j4n.dll")); } catch (Exception e) { e.printStackTrace(); } mScanner = new DotNetScanner(); mScanner.RegisterListener(this);}

使用Swing来显示UI

public ScanDocuments() { super(new BorderLayout()); initTWAIN(); //Create a file chooser mFileChooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter( ".png", "png"); mFileChooser.setFileFilter(filter); mLoad = new JButton("Load"); mLoad.addActionListener(this); mScan = new JButton("Scan"); mScan.addActionListener(this); // get sources mSources = mScanner.GetSources(); if (mSources != null) { mSourceList = new JComboBox(mSources); } else { mSourceList = new JComboBox(new String[]{"N/A"}); } mSourceList.setSelectedIndex(0); // button panel JPanel buttonPanel = new JPanel(); buttonPanel.add(mSourceList); buttonPanel.add(mScan); buttonPanel.add(mLoad); add(buttonPanel, BorderLayout.PAGE_START); // image panel JPanel imageViewer = new JPanel(); mImage = new JLabel(); mImage.setSize(480, 640); imageViewer.add(mImage); add(imageViewer, BorderLayout.CENTER); }

java 扫描仪twain_通过Java调用Dynamsoft .NET TWAIN SDK控制扫描仪扫描文档相关推荐

  1. java调用扫描仪_通过Java调用Dynamsoft .NET TWAIN SDK控制扫描仪扫描文档

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下载Dynamic .NET TWAIN 下载jni4net,学习里面的代码实例 在环境变量中设置好JAVA_HOME和C:\Windows\Micros ...

  2. java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  3. java计算机毕业设计小区物业管理系统录像展示.mp4源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计小区物业管理系统录像展示.mp4源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计小区物业管理系统录像展示.mp4源程序+mysql+系统+lw文档+远程调试 ...

  4. JAVA毕业设计vue健康餐饮管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue健康餐饮管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue健康餐饮管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈 ...

  5. java计算机毕业设计vue健康餐饮管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue健康餐饮管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue健康餐饮管理系统设计与实现MyBatis+系统+LW文档+源码+调试部 ...

  6. java计算机毕业设计临大新生入学指导系统源代码+数据库+系统+lw文档

    java计算机毕业设计临大新生入学指导系统源代码+数据库+系统+lw文档 java计算机毕业设计临大新生入学指导系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  7. java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部 ...

  8. 基于JAVA校园共享单车系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA校园共享单车系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA校园共享单车系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  9. java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部 ...

最新文章

  1. 保护SNMP协议服务安全的三个步骤
  2. 变压器符号_变压器电路图符号大全
  3. 集合遍历[设计模式总结] 9. 迭代器模式
  4. java 字节取位_java位 、字节 、字符的梳理
  5. P4774-[NOI2018]屠龙勇士【EXCRT】
  6. Linux各个目录的作用及内容
  7. Linux——查看系统的日志的一些实用操作
  8. 【FPGA】——UART串口通信
  9. 【Flink】FLink checkpont 界面显示的含义
  10. 设计灵感|色彩与形状巧妙运用在创意时尚海报设计中
  11. 「知识点」JavaScript 中11个有趣的事实
  12. 22男人应该明白的道理
  13. JS-元素大小深入学习-offset、client、scroll等学习研究笔记
  14. App Store新规即将到来 你准备好了吗?
  15. C51行列键盘扫描程序
  16. 项目管理知识体系指南 (一)
  17. 哈工大的计算机考研分数线,哈尔滨工业大学2009年计算机考研复试分数线
  18. GGV纪源资本招募GGV Fellows啦!
  19. linux下的计划任务
  20. 自适应阈值(adaptiveThreshold)分割原理及实现

热门文章

  1. 交叉熵损失函数原理深层理解
  2. 简单的图书馆管理系统
  3. 深信服产品线=上网行为管理SSL×××防火墙应用交付产品等
  4. 搜索引擎Lucene(6):查询结果高亮及词频提取
  5. OpenGL着色器语言GLSL语法总结
  6. 【C语言】输入字符串数组并排序
  7. Matlab之绘制带帷幕的网格曲面图
  8. 广东一只名叫“大壮“的猫会葛优躺,难道它也内卷了?
  9. 微盟WOS正式发布,打造去中心化商业操作系统
  10. 开学季征文 | 一个新晋大三生对前期的回顾和未来的规划