VintaSoft Twain .NET SDK 15.4: Документация для Веб разработчика
В этом разделе
Как установить значение возможности/опции TWAIN/WIA/SANE сканера изображений?
В этом разделе
TWAIN стандарт определяет множество стандартных возможностей (XferCount, IPixelType, DoubleFeedDetection, IContrast, IRotation, ...), которые могут поддерживаться TWAIN устройством. Также TWAIN устройство может предоставлять пользовательские возможности, определяемые производителем сканера изображений.

Если Вы хотите установить текущее значение возможности TWAIN устройства, используйте функцию WebTwainDeviceJS.setCapability.



SANE API не определяет стандартные опции для SANE устройства, SANE API просто определяет правила, которые позволяют создавать опции, которые являются самодокументированными.

Если Вы хотите установить текущее значение опции SANE устройства, используйте функцию WebTwainDeviceJS.setCapability.



Вот JavaScript код, который демонстрирует как установить значение возможности DuplexEnabled для TWAIN/SANE сканера изображений:
// set value of DuplexEnabled capability of TWAIN/WIA/SANE/eSCL image scanner
__setDuplexEnabledCapValueOfTwainScanner();



/**
 * Sets value of DuplexEnabled capability of TWAIN/WIA/SANE/eSCL image scanner.
 */
function __setDuplexEnabledCapValueOfTwainScanner() {
    // register the evaluation version of VintaSoft Web TWAIN service
    // please read how to get evaluation license in documentation: https://www.vintasoft.ru/docs/vstwain-dotnet-web/Licensing-Twain_Web-Evaluation.html
    Vintasoft.Twain.WebTwainGlobalSettingsJS.register('REG_USER', 'REG_URL', 'REG_CODE', 'EXPIRATION_DATE');

    // URL to the VintaSoft Web TWAIN service
    var serviceUrl = 'https://localhost:25329/api/VintasoftTwainApi';
    // a Web API controller that allows to work with TWAIN/WIA/SANE/eSCL devices
    var twainService = new Vintasoft.Shared.WebServiceControllerJS(serviceUrl);

    // TWAIN/WIA/SANE/eSCL device manager
    var deviceManager = new Vintasoft.Twain.WebTwainDeviceManagerJS(twainService);

    // the default settings of device manager
    var deviceManagerInitSetting = new Vintasoft.Twain.WebTwainDeviceManagerInitSettingsJS();

    var device = null;
    try {
        // open device manager
        deviceManager.open(deviceManagerInitSetting);

        // get the default TWAIN/WIA/SANE/eSCL device
        device = deviceManager.get_DefaultDevice();

        // open TWAIN device (do not display device UI but display dialog with image scanning progress)
        device.open(false, true);

        // if device is SANE device
        if (device.get_IsSane()) {
            // specify that images must be acquired from source "ADF Duplex"
            device.set_SaneScanSource("ADF Duplex");
        }
        // if device is TWAIN/WIA/eSCL device
        else {
            // set value of DuplexEnabled capability of TWAIN image scanner
            device.setCapability(new Vintasoft.Twain.WebTwainDeviceCapabilityIdEnumJS("DuplexEnabled"), true);
        }

        // a collection that stores images, which are acquired from TWAIN/WIA/SANE/eSCL devices and stored in memory of VintaSoft Web TWAIN service
        var acquiredImages = new Vintasoft.Twain.WebAcquiredImageCollectionJS(deviceManager);
        var acquireModalState;
        do {
            // do one step of modal image acquisition process
            var acquireModalResult = device.acquireModalSync();
            // get state of image acquisition
            acquireModalState = acquireModalResult.get_AcquireModalState().valueOf();

            switch (acquireModalState) {
                case 2:   // image is acquired
                    // get acquired image
                    var acquiredImage = acquireModalResult.get_AcquiredImage();
                    // add acquired image to the image collection
                    acquiredImages.add(acquiredImage);

                    // get image as Base64 string
                    var bitmapAsBase64String = acquiredImage.getAsBase64String();
                    // update image preview
                    var previewImageElement = document.getElementById('previewImage');
                    previewImageElement.src = bitmapAsBase64String;

                    // clear image collection (delete images from memory of VintaSoft Web TWAIN service) because image is not necessary anymore
                    acquiredImages.clear();
                    break;

                case 4:   // image scan is failed
                    alert(acquireModalResult.get_ErrorMessage());
                    break;

                case 9:   // image scan is finished
                    break;
            }
        }
        while (acquireModalState !== 0);
    }
    catch (ex) {
        alert(ex);
    }
    finally {
        if (device != null) {
            // close the device
            device.close();
        }
        // close the device manager
        deviceManager.close();
    }
}



Вот TypeScript код, который демонстрирует как установить значение возможности DuplexEnabled для TWAIN/SANE сканера изображений:
import { Component } from '@angular/core';

@Component({
  selector: 'twain-scanning-demo',
  templateUrl: './twain-scanning-demo.component.html'
})
export class TwainScanningDemoComponent {

  ngOnInit() {
    // set value of DuplexEnabled capability of TWAIN/WIA/SANE/eSCL image scanner
    this.__setDuplexEnabledCapValueOfTwainScanner();
  }


  /**
   * Sets value of DuplexEnabled capability of TWAIN/WIA/SANE/eSCL image scanner.
   */
  __setDuplexEnabledCapValueOfTwainScanner() {
    // register the evaluation version of VintaSoft Web TWAIN service
    // please read how to get evaluation license in documentation: https://www.vintasoft.ru/docs/vstwain-dotnet-web/Licensing-Twain_Web-Evaluation.html
    Vintasoft.Twain.WebTwainGlobalSettingsJS.register('REG_USER', 'REG_URL', 'REG_CODE', 'EXPIRATION_DATE');

    // URL to the VintaSoft Web TWAIN service
    let serviceUrl: string = 'https://localhost:25329/api/VintasoftTwainApi';
    // a Web API controller that allows to work with TWAIN/WIA/SANE/eSCL devices
    let twainService: Vintasoft.Shared.WebServiceControllerJS = new Vintasoft.Shared.WebServiceControllerJS(serviceUrl);

    // TWAIN/WIA/SANE/eSCL device manager
    let deviceManager: Vintasoft.Twain.WebTwainDeviceManagerJS = new Vintasoft.Twain.WebTwainDeviceManagerJS(twainService);

    // the default settings of device manager
    let deviceManagerInitSetting: Vintasoft.Twain.WebTwainDeviceManagerInitSettingsJS = new Vintasoft.Twain.WebTwainDeviceManagerInitSettingsJS();

    try {
      // open device manager
      deviceManager.open(deviceManagerInitSetting);
    }
    catch (ex) {
      alert(ex);
      return;
    }

    let device: Vintasoft.Twain.WebTwainDeviceJS = null;
    try {
      // get the default TWAIN/WIA/SANE/eSCL device
      device = deviceManager.get_DefaultDevice();

      // open TWAIN device (do not display device UI but display dialog with image scanning progress)
      device.open(false, true);

      // if device is SANE device
      if (device.get_IsSane()) {
        // specify that images must be acquired from source "ADF Duplex"
        device.set_SaneScanSource("ADF Duplex");
      }
      // if device is TWAIN/WIA/eSCL device
      else {
        // set value of DuplexEnabled capability of TWAIN image scanner
        device.setCapability(new Vintasoft.Twain.WebTwainDeviceCapabilityIdEnumJS("DuplexEnabled"), true);
      }

      // a collection that stores images, which are acquired from TWAIN/WIA/SANE/eSCL devices and stored in memory of VintaSoft Web TWAIN service
      let acquiredImages: Vintasoft.Twain.WebAcquiredImageCollectionJS = new Vintasoft.Twain.WebAcquiredImageCollectionJS(deviceManager);
      let acquireModalState: number;
      do {
        // do one step of modal image acquisition process
        let acquireModalResult: Vintasoft.Twain.WebTwainDeviceAcquireModalResultJS = device.acquireModalSync();
        // get state of image acquisition
        acquireModalState = acquireModalResult.get_AcquireModalState().valueOf() as number;

        switch (acquireModalState) {
          case 2:   // image is acquired
            // get acquired image
            let acquiredImage: Vintasoft.Twain.WebAcquiredImageJS = acquireModalResult.get_AcquiredImage();
            // add acquired image to the image collection
            acquiredImages.add(acquiredImage);

            // get image as Base64 string
            let bitmapAsBase64String: string = acquiredImage.getAsBase64String();
            // update image preview
            let previewImageElement: HTMLImageElement = document.getElementById('previewImage') as HTMLImageElement;
            previewImageElement.src = bitmapAsBase64String;

            // clear image collection (delete images from memory of VintaSoft Web TWAIN service) because image is not necessary anymore
            acquiredImages.clear();
            break;

          case 4:   // image scan is failed
            alert(acquireModalResult.get_ErrorMessage());
            break;

          case 9:   // image scan is finished
            break;
        }
      }
      while (acquireModalState !== 0);
    }
    catch (ex) {
      alert(ex);
    }
    finally {
      if (device != null) {
        // close the device
        device.close();
      }
      // close the device manager
      deviceManager.close();
    }
  }

}