2017-11-08 13 views
1

문서의 한 면만 스캔 할 수 있지만 두 번째면은 스캔 할 수 없습니다. Wia Leadtools를 사용하여 양면 스캔을 수행하는 데 필요한 설정은 무엇입니까?Leadtools WIA를 사용하여 문서의 양면을 스캔해야합니다.

WiaAcquireFlags flags = WiaAcquireFlags.None; 
bool showProgress = true; 
_progressDlg = new ProgressForm("Transferring", "", 100); 
_wiaAcquiring = true;     

if (_showUserInterface) 
{ 
    flags = WiaAcquireFlags.UseCommonUI | WiaAcquireFlags.ShowUserInterface; 
} 
else 
{ 
    if (SelectAcquireSource() != System.Windows.Forms.DialogResult.OK) 
    { 
     _wiaAcquiring = false; 
     return; 
    } 
} 

if (_showUserInterface && _wiaVersion == WiaVersion.Version2) 
    showProgress = false; 

if (showProgress) 
    _progressDlg.Show(); 

_wiaSession.AcquireOptions = _wiaAcquireOptions; 
_transferMode = (_wiaProperties.DataTransfer.TransferMode == WiaTransferMode.None) ? WiaTransferMode.Memory : _wiaProperties.DataTransfer.TransferMode; 


//#if !LEADTOOLS_V19_OR_LATER 
System.Windows.Forms.DialogResult dialogResult = _wiaSession.Acquire(mainWindowHandle, _sourceItem, flags); 

업데이트 코드 :, 나는 "LEADTOOLS 지원"의 대답에 따라 코드를 업데이트하지만 여전히 페이지의 1 개면을 스캔하는 중입니다.

public void Scan() 
{ 
    ... 
    ... 
    ... 
    object rootItem = _wiaSession.GetRootItem(null); 
    if (rootItem != null) 
    { 
    wiaSession.EnumItemsEvent += new EventHandler<WiaEnumItemsEventArgs>  (wiaSession_EnumItemsEvent);  
    wiaSession.EnumChildItems(rootItem); 
    wiaSession.EnumItemsEvent -= new EventHandler<WiaEnumItemsEventArgs>(wiaSession_EnumItemsEvent); 

    wiaSession.AcquireOptions = _wiaAcquireOptions; 
    transferMode = (_wiaProperties.DataTransfer.TransferMode == WiaTransferMode.None) ? WiaTransferMode.Memory : _wiaProperties.DataTransfer.TransferMode; 

    //#if !LEADTOOLS_V19_OR_LATER 
     System.Windows.Forms.DialogResult dialogResult = _wiaSession.Acquire(mainWindowHandle, _sourceItem, flags); 

    ... 
    ... 
    ... 
} 
public void wiaSession_EnumItemsEvent(object sender, WiaEnumItemsEventArgs e) 
{ 
    if (e.Item != null) 
    {    

    WiaProperties wiaProperties = _wiaSession.GetProperties(e.Item); 
     if (System.Windows.Forms.MessageBox.Show("Enable duplex?", "WIA test", System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) 
     { 
      wiaProperties.ScanningMode = WiaScanningModeFlags.Feeder | WiaScanningModeFlags.Duplex; 
      wiaProperties.MaximumNumberOfPages = 2; 
     } 
     else 
     { 
      wiaProperties.ScanningMode = WiaScanningModeFlags.Feeder | WiaScanningModeFlags.FrontOnly; 
      wiaProperties.MaximumNumberOfPages = 1; 
     } 
      wiaSession.SetProperties(e.Item, wiaProperties); 
    } 
    } 

참고 :
- 나는 코드를 디버깅하고 그것은 wiaSession_EnumItemsEvent
의 속성을 설정합니다 - 그것은 "이중 사용"에서 요청하면, 내가 예를 클릭
- 속성
을 설정하는 코드를 디버깅의 추가 스크린 샷 - 나는 양쪽에서 스캔 할 공급기에 1 매의 용지를

enter image description here

기능 옵션 : enter image description here

enter image description here

답변

0

을 가정 급 지대의 용지 1 장을, 양면을 스캔 할 수있는 코드는 2 페이지, 각면 하나를 지정해야합니다. 이 작업은 WiaProperties.MaximumNumberOfPages 속성을 사용하여 수행 할 수 있습니다. 그런 다음 WiaProperties.ScanningMode 속성을 사용하여 양면 스캔을 활성화합니다. 코드는 다음과 같습니다.

WiaProperties wiaProps = _wiaSession.GetProperties(wiaItem); 
if (MessageBox.Show("Enable duplex?", "WIA test", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) 
{ 
    wiaProps.ScanningMode = WiaScanningModeFlags.Feeder | WiaScanningModeFlags.Duplex; 
    wiaProps.MaximumNumberOfPages = 2; 
} 
else 
{ 
    wiaProps.ScanningMode = WiaScanningModeFlags.Feeder | WiaScanningModeFlags.FrontOnly; 
    wiaProps.MaximumNumberOfPages = 1; 
} 
_wiaSession.SetProperties(wiaItem, wiaProps); 
+0

답변에 따라 코드가 업데이트되었지만 여전히 문서의 한 면만 스캐닝하고 있습니다. 내가 누락 된 부분을 코드로 들여다 볼 수 있습니까? –

+0

WIA 버전 1.0 또는 2.0을 사용하고 있습니까? Capabilities 메뉴에서 WIA 데모를 실행하고 "Show supported capabilities ..."를 선택하면 그 안에 트리 뷰가있는 "Select Item"대화 상자가 나타 납니까? 트리의 각 항목에 대해 나열된 기능은 무엇입니까? –

+0

_wiaSession.Startup (WiaVersion.Version2); –