WIA 2.0双面扫描

时间:2015-06-09 22:25:32

标签: c# .net windows scanning wia

自Vista以来,Windows附带WIA 2.0(wiaaut.dll)。 根据以下知识库文章以及我在各种论坛上的许多发现,使用WIA 2.0不再可能进行双面扫描。然而,文章提到使用原生WIA 2.0,什么会使双面扫描成为可能。 (https://support.microsoft.com/en-us/kb/2709992

根据WIA 2.0文档(https://msdn.microsoft.com/en-us/library/windows/desktop/ms630196(v=vs.85).aspx),可以使用新的WIA_IPS_DOCUMENT_HANDLING_SELECT(3088)属性进行双面扫描。

我的问题是:

  • 我不知道如何使用原生WIA,我怀疑在使用C#时它是不可能的。
  • 我找不到设置新WIA_IPS_DOCUMENT_HANDLING_SELECT属性的方法,因为我的wiaDevice属性中没有该属性。根据WiaDef.h,它的属性id仍然是3088,唯一可能的值是0x400(1024)。

如果有人可以帮助我(我认为很多其他人),我将非常感谢!

问候,

微米。

1 个答案:

答案 0 :(得分:5)

经过几个小时的搜索后,我发现了以下帖子中的线索。 https://stackoverflow.com/a/7580686/3641369

由于我使用的是单程双面扫描仪,因此正面和背面都可以同时扫描。通过将设备属性(设备属性,而不是项目属性)Document_Handling_Select设置为5(Feeder + Duplex),将Pages设置为1并调用传输方法2次,我终于得到了扫描的字体和背面。

设置wiaDev.Properties ["文档处理选择"] = 5指定使用进纸器和扫描双面打印。

设置wiaDev.Properties [" Pages"] = 1指定扫描仪应在内存中保留1页,这样可以在1次扫描过程中将页面的正面和背面保留在内存中。

.table{
  display: table;
  width:100%
}
.row{
  display: table-row;
}
.cell{
  display: table-cell; 
  width:20%
}

获取Wia项目并设置项目属性,例如颜色和dpi。

if (duplex)
{
     wiaDev.Properties["Document Handling Select"].set_Value(5);
     wiaDev.Properties["Pages"].set_Value(1);
} 

然后调用传输方法两次返回两个不同的图像

var item = wiaDev.Items[1];
item.Properties["6146"].set_Value((int)clr);
item.Properties["6147"].set_Value(dpi);
item.Properties["6148"].set_Value(dpi);

希望这有助于某人!