WIA 2.0双面扫描

ITD*_*ITD 4 .net c# windows wia scanning

自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).

如果有人可以帮助我(我想其他许多人),我将不胜感激!

问候,

M.

ITD*_*ITD 7

经过几个小时的搜索后,我发现了以下帖子中的线索. /sf/answers/530648051/

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

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

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

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

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

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

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

var img = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);

ImageFile imgduplex = null;
if(duplex)
   imgduplex = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人!

  • 我可以问你是如何确定Feeder和Duplex的值是什么的?当我尝试将Document Handling Select设置为1以外的任何值时,它无法设置属性,但我知道此扫描仪可以在其他程序中执行双面单遍扫描.当我将其设置为5时,我得到"价值不在预期范围内".我将页面设置为1. (4认同)