Java的TWAIN/WIA实现

8

我正在开发一个与扫描仪交互的应用程序(Java Applet)。我知道在Windows系统中,需要使用Twain库或WIA库才能使其正常工作。但我不确定两者之间的区别是什么?我正在尝试使用这个库:

http://thorntonzone.com/manuals/Compression/Fax,%20IBM%20MMR/MMSC/mmsc/uk/co/mmscomputing/device/twain/index.html

JAR文件链接已损坏,我从这里获取了它。 http://rsbweb.nih.gov/ij/plugins/twain-scan.html 并且从这里获取DLL文件: http://sourceforge.net/projects/twain-dsm/?source=dlp 但是,它无法检测到源。这是错误日志:

http://pastebin.com/cB9gL0ip

我正在使用64位机器。有人能成功吗?
TWAIN规范太长了,难以遵循,并且我没有找到任何关于WIA实现的资源。
非常感谢任何帮助/指针/资源。

你可能会喜欢查看Morena 7。我过去曾使用过Twain API,它非常好用。我也见过WIA实现(beta版)在工作中表现得很好。 - MadProgrammer
我正在寻找一个免费的解决方案。我的问题已被编辑以删除该行。 - Mo3z
就我个人而言,我从未找到过一个良好的免费 TWAIN 解决方案,也从未见过 WIA 解决方案,但这只是我的看法。 - MadProgrammer
mmsc库在SANE上运行良好,只是twain对我不起作用。我也没有看到WIA的解决方案。我发现另一篇帖子也抱怨了同样的问题:https://dev59.com/fmYq5IYBdhLWcg3w7E0F - Mo3z
1个回答

10

使用相同的位模式

在Java中控制TWAIN设备时,所有组件都需要处于相同的模式。即JRE、Twain DSM(源管理器)和Twain驱动(扫描仪驱动)都必须是32位或64位。不能混合使用。

64位Windows的默认安装包含32位模式的Twain DSM。您说您已经下载了64位的DSM。这很可能是扫描仪驱动程序是32位的原因,所以它找不到。

您有2个选项:

全部保持64位

  • 使用64位TWAINDSM.DLL。
  • 确保您的JRE/JDK为64位。
  • 确保您的扫描仪有64位驱动程序。

我的扫描仪没有提供64位驱动程序,但我使用64位“虚拟扫描仪”测试了一个64位配置,它可以正常工作。

全部保持32位(推荐)

  • 使用32位TWAINDSM.DLL。
  • 确保您的JRE/JDK为32位。
  • 使用扫描仪的32位驱动程序(可能是默认设置)。

您可以从此处下载32位和64位的Twain虚拟扫描仪

注意:我提到JDK,因为如果您从IDE运行代码,则它可能指向与系统默认值不同的JRE。确实发生过这样的事情,我亲身经历过。


Jonathan,这是位模式问题。我花了两天时间才理解这个问题。我只需要将我的IDE指向32位JRE即可。谢谢!! - Mo3z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接