2017-11-08 14 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
のプロパティを設定します - それは「両面を有効にする」から尋ねられたとき、私はYES
をクリック - プロパティ
を設定するためのデバッグ用のコードを追加しましたスクリーンショットを - 私は両側からスキャンするフィーダーに1枚の用紙を持って

enter image description here

の機能オプション:あなたは、フィーダで1枚の用紙を持っていると仮定すると enter image description here

enter image description here

答えて

0

、両面をスキャンするコードは2ページ、各側に1つを指定する必要があります。これは、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

私はあなたの答えに応じてコードを更新しましたが、まだ文書の1面をスキャンしています。私が紛失しているコードを見てください。 –

+0

WIAバージョン1.0または2.0を使用していますか? CapabilitiesメニューからWIAデモを実行して「サポートされている機能を表示...」を選択すると、その中にツリービューを持つ「項目の選択」ダイアログが表示されますか?ツリー内の各アイテムの機能は何ですか? –

+0

_wiaSession.Startup(WiaVersion.Version2); –

関連する問題