2015-06-09 70 views
2

由於Vista,Windows隨附WIA 2.0(wiaaut.dll)。 根據以下知識庫文章以及我在各種論壇上的許多調查結果,使用WIA 2.0不再可能進行雙面掃描。然而,該文章提到使用原生WIA 2.0,什麼可以使雙面掃描成爲可能。 (https://support.microsoft.com/en-us/kb/2709992WIA 2.0雙面掃描

按照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.

+0

如果可能,我建議您使用[TWAIN協議](twain.org)代替。與WIA相比,TWAIN爲成像設備提供更多定製選項和高級控制。 瞭解更多關於[在.NET應用程序中使用TWAIN](http://www.dynamsoft.com/blog/document-imaging/using-twain-in-net-applications/) – Rachel

回答

4

幾個小時的搜索後,我發現在以下職位的線索。 https://stackoverflow.com/a/7580686/3641369

由於我使用了一次通過雙面掃描儀,正面和背面同時掃描。通過設置設備屬性(設備屬性,而不是項目屬性)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); 
} 

獲取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); 

然後調用傳輸方法兩次返回兩個不同的圖像

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

ImageFile imgduplex = null; 
if(duplex) 
    imgduplex = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG); 

希望這可以幫助別人!

+0

請問您是如何確定什麼Feeder和Duplex的值是?當我嘗試將文檔處理選擇設置爲除1之外的任何其他值時,它無法設置屬性,但我知道此掃描程序可以在其他程序中執行雙面單遍掃描。當我將它設置爲5時,我會得到「價值不在預期範圍內」。我將頁面設置爲1。 – Smurfie