WIA 2.0 双面扫描
Posted
技术标签:
【中文标题】WIA 2.0 双面扫描【英文标题】:WIA 2.0 Duplex scanning 【发布时间】:2015-08-24 23:17:17 【问题描述】:从 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.
【问题讨论】:
如果可能,我建议您使用 [TWAIN 协议](twain.org)。与 WIA 相比,TWAIN 提供了更多的自定义选项和对成像设备的高级控制。在using TWAIN in .NET Applications了解更多信息 【参考方案1】:经过几个小时的搜索,我在以下帖子中找到了线索。 https://***.com/a/7580686/3641369
由于我使用的是一次性双面扫描仪,因此可以同时扫描正面和背面。通过设置设备属性(设备属性,不是item属性)Document_Handling_Select为5(Feeder + Duplex)和Pages为1,调用传输方法2次,终于得到了扫描的字体和背面。
设置 wiaDev.Properties["Document Handling Select"] = 5 指定使用进纸器和扫描双面。
设置 wiaDev.Properties["Pages"] = 1 指定扫描仪应在内存中保留 1 页,这允许在 1 次扫描期间将页面的正面和背面都保留在内存中。
if (duplex)
wiaDev.Properties["Document Handling Select"].set_Value(5);
wiaDev.Properties["Pages"].set_Value(1);
获取 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);
然后调用 transfer 方法两次返回两个不同的图像
var img = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);
ImageFile imgduplex = null;
if(duplex)
imgduplex = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);
希望这对某人有所帮助!
【讨论】:
请问您是如何确定 Feeder 和 Duplex 的值的?当我尝试将文档处理选择设置为 1 以外的任何值时,它无法设置该属性,但我知道此扫描仪可以在其他程序中进行双面单程扫描。当我将其设置为 5 时,我得到“值不在预期范围内”。我将页面设置为 1。以上是关于WIA 2.0 双面扫描的主要内容,如果未能解决你的问题,请参考以下文章