我正在开发一个java应用程序,它可以搜索我的系统并找到所有的扫描仪,并让我选择是否安装了多个扫描仪,然后继续扫描文档。我知道我应该用twain来解决这个问题。我的系统路径中有一个库文件,但我不知道如何使用它。有没有关于如何在我的java应用程序中使用它的示例程序。
我发现下面的示例代码使用WIA与扫描仪进行通信。是否有任何jar文件可以导入到我的netbeans中,或者是否有其他方法可供选择。
WIA.DeviceManager manager = new WIA.DeviceManagerClass();
string deviceName = "";
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
{
if (info.Type == WIA.WiaDeviceType.ScannerDeviceType)
{
foreach (WIA.Property p in info.Properties)
{
if (p.Name == "Name")
{
deviceName = ((WIA.IProperty)p).get_Value().ToString();
Console.WriteLine(deviceName);
}
}
}
}发布于 2015-01-23 00:56:02
我不确定您使用的是什么库,但我推荐这两个库中的一个:
Morena (低价,良好的文档和电子邮件通信):
http://www.gnome.sk/index.html
mm的计算(开源LGPL)
http://thorntonzone.com/manuals/Compression/Fax,%20IBM%20MMR/MMSC/mmsc/uk/co/mmscomputing/device/twain/index.html
如果你愿意付一小笔钱,我推荐Morena。使用Morena 6 (TWAIN),我能够创建一个返回Java数据的扫描小程序(在外部调用),并且只有145行我自己的base64代码。最重要的是,他们有完整的工作示例和一个非常好的FAQ页面,几乎涵盖了我遇到的每一个错误。我很少使用mms计算的插件,因为直到Morena项目完成后我才发现它的存在。
发布于 2017-03-15 23:47:54
对于一个人来说,在不太了解我们正在处理的事情的情况下做出这样的决定是非常困难的。首先,让我对它进行一些说明。
每个扫描仪设备都自带一个自定义扫描驱动程序。这些驱动程序使用TWAIN或WIA与使用这些驱动程序的应用程序进行通信。换句话说,对于所有使用这些驱动程序的应用程序,都必须遵循两个协议: WIA:https://msdn.microsoft.com/en-us/library/windows/desktop/ms630368(v=vs.85).aspx
吐温:http://www.twain.org/
相信我,你不会想深入了解这些细节的。
因此,您的目标是在应用程序中的一个协议上使用来查询设备。您粘贴的代码位是一个WIA c#示例应用程序,用于查询并列出机器上安装的所有WIA only驱动程序。
我真的建议你使用TWAIN,因为WIA是完全基于COM的,对于C++以外的人来说,这是相当困难的,而且我不确定WIA协议是否支持TWAIN,但反过来应该是可行的。
如果我要像您一样做一些事情,我会考虑用Java语言为TWAIN编写一个自定义包装器,就像C#世界中的互操作一样。与WIA相比,TWAIN应该更容易。
如果需要任何确认,请随时询问。
谢谢!
发布于 2015-02-28 10:38:44
这是C#代码。要使JVM和CLR协同工作,可以使用jni4net包装代码块。您可以阅读文章Java TWAIN with Dynamic .NET TWAIN and jni4net来学习如何在Java语言中调用.NET代码。
https://stackoverflow.com/questions/27959457
复制相似问题