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

下载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调用扫描仪_通过Java调用Dynamsoft .NET TWAIN SDK控制扫描仪扫描文档相关推荐

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

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

  2. 计算机毕业设计java+ssm理论课_考勤,作业,签到管理系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 本理论课管理系统采用目前最流行的ssm框架和eclipse编辑器.mysql数据库设计并实现的 .主要包括登录模块.课程信息管理模块.考勤信息管理模块.成绩管理模块.和退出模块等多个模块 本 ...

  3. java计算机毕业设计腾讯网游辅助小助手源代码+数据库+系统+lw文档

    java计算机毕业设计腾讯网游辅助小助手源代码+数据库+系统+lw文档 java计算机毕业设计腾讯网游辅助小助手源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...

  4. java计算机毕业设计酒店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计酒店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计酒店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

  5. java计算机毕业设计黑格伯爵国际英语贵族学校官网MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计黑格伯爵国际英语贵族学校官网MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计黑格伯爵国际英语贵族学校官网MyBatis+系统+LW文档+源码+调试部署 本源 ...

  6. java计算机毕业设计志愿者管理系统演示录像2020源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计志愿者管理系统演示录像2020源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计志愿者管理系统演示录像2020源码+mysql数据库+系统+lw文档+部署 本源 ...

  7. java计算机毕业设计云医疗自助就诊平台录屏源码+数据库+lw文档+系统+部署

    java计算机毕业设计云医疗自助就诊平台录屏源码+数据库+lw文档+系统+部署 java计算机毕业设计云医疗自助就诊平台录屏源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开 ...

  8. java计算机毕业设计互联网校园家教兼职平台源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计互联网校园家教兼职平台源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计互联网校园家教兼职平台源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

  9. Java计算机毕业设计舒旅程旅游景点预订网站源码+系统+数据库+lw文档

    Java计算机毕业设计舒旅程旅游景点预订网站源码+系统+数据库+lw文档 Java计算机毕业设计舒旅程旅游景点预订网站源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

最新文章

  1. 基于Python实现图画转换字符画
  2. 检测到目标主机可能存在缓慢的HTTP拒绝服务攻击
  3. cn.hutool.poi.excel.ExcelUtil 只输出指定的标题
  4. VTK:RenderMan之PolyDataRIB
  5. pyspark.zip/pyspark/worker.py:53: UnicodeWarning: Unicode equal comparison failed to convert both ar
  6. 工作73:获取id值
  7. python实现简单爬虫抓取图片
  8. 每帧只需9ms,手机实时「三维动作识别」
  9. 打印机显示脱机使用打印机不能打印
  10. 5. 学习集合与常用类
  11. 【实战】Docker容器资源管理
  12. 如何处理四级标题、五级标题及其对应的样式?
  13. unity游戏模型获取- AssertStudio(原GuiStudio)(以第二银河为例)
  14. 网页打开QQ链接,进行临时会话
  15. php教程7天速成,练字速成法一周写出一手漂亮的字!【7天练字速成】
  16. 听障人士亲述:我们在VRChat用手语交流,成员规模5000人
  17. Spring Actuator介绍及使用
  18. C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)
  19. DXC帮助全球企业和公共领域客户拥抱变革
  20. 如何在 R 中计算 Cramer V

热门文章

  1. Mavenir融合分组核心解决方案将为德国电信在德国的5G独立组网(SA)网络提供支持
  2. 浅析 AGS REST API
  3. CSS实现内容强制不换行、自动换行、强制换行
  4. C51模拟PS2键盘(三)
  5. 【区块链与密码学】第9-3讲:群签名方案的安全性要求
  6. php开发cms漏洞,bagecms漏洞复现
  7. 玩转Redis-干掉钉子户-没有设置过期时间的key
  8. C++中的struct
  9. 乔恩·斯凯特(Jon Skeet)-编程的查克·诺里斯(Chuck Norris)
  10. subversion出现如下错误怎么解决!已解决