1

文書の片面しかスキャンできず、裏面はスキャンできません。Wia Leadtools を使用してスキャンの両面を実現するために必要な設定は何ですか。

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 サポート」の回答に従ってコードを更新しましたが、まだページの片面をスキャンしています。

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 枚の紙があります。両面からスキャン

ここに画像の説明を入力

機能オプション: ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

0

フィーダーに用紙が 1 枚あると仮定すると、両面をスキャンするコードは、各面に 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);
于 2017-11-09T08:18:46.273 に答える