适用于java的TWAIN / WIA示例

时间:2015-01-15 08:37:11

标签: java wia twain

我正在开发一个java应用程序,它可以搜索我的系统并查找所有扫描程序,并让我选择是否安装了多个扫描程序并继续扫描文档。我明白我应该为此使用吐温。我的系统路径中有一个库文件,但我不知道如何使用它。有没有关于如何在我的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);
                }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

如果不了解我们正在处理的事情,很难有人做出这样的决定。首先让我阐明一下。

每台扫描仪设备都附带自定义扫描驱动程序。这些驱动程序使用TWAIN或WIA与使用驱动程序的应用程序进行通信。换句话说,对于使用这些驱动程序的所有应用程序,必须遵循两个协议: WIA:https://msdn.microsoft.com/en-us/library/windows/desktop/ms630368(v=vs.85).aspx

TWAIN:http://www.twain.org/

相信我你不想了解这些细节。

因此,您的目标是使用应用程序中的某个协议来查询设备。您粘贴的代码位是一个WIA c#示例应用程序,用于查询并列出计算机上安装的所有WIA驱动程序。

我真的建议你使用TWAIN,因为WIA完全基于COM,对于C ++以外的人来说,它非常困难,而且我也不确定WIA协议是否支持TWAIN,但反过来假设可以工作。 / p>

如果我要做像你这样的事情,我会考虑在Java中为TWAIN编写一个自定义包装器,就像C#世界中的互操作一样。与WIA相比,TWAIN应该更容易。

如果需要任何确认,请随时询问。

谢谢!

答案 1 :(得分:0)

我不确定您使用的是哪个库,但我推荐这两个库中的一个:

Morena(低价,良好的文档和电子邮件通信):

  

http://www.gnome.sk/index.html

mm&n;计算(开源LGPL)

  

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

如果您愿意支付一小笔费用,我建议莫雷纳。使用Morena 6(TWAIN),我能够创建一个返回base64 jpeg数据的扫描小程序(外部称为),最后只有145行我自己的Java代码。最重要的是,他们有完整的工作示例和一个非常好的FAQ页面,几乎涵盖了我遇到的每一个错误。我没有玩过mms计算机的插件,因为直到Morena项目完成之后我才发现它。

答案 2 :(得分:0)

这是C#代码。要使JVM和CLR协同工作,可以使用jni4net来包装代码块。您可以阅读文章Java TWAIN with Dynamic .NET TWAIN and jni4net以了解如何使用Java调用.NET代码。