VintaSoft Twain .NET SDK 15.0: Документация для Веб разработчика
В этом разделе
    JavaScript классы для получения изображений от TWAIN/SANE сканера
    В этом разделе
    Файл Vintasoft.Twain.js содержит классы, которые позволяют получать изображения от локального TWAIN/SANE сканера:

    Файл Vintasoft.Twain.d.ts является модулем TypeScript для файла Vintasoft.Twain.js и содержит определения классов и перечислений для получения изображений от TWAIN/SANE сканера в TypeScript.


    Важно: Файл Vintasoft.Twain.js содержит ссылки на файл Vintasoft.Shared.js.
    Важно: Файл Vintasoft.Twain.d.ts должен использоваться совместно с файлами Vintasoft.Twain.js, Vintasoft.Shared.js и Vintasoft.Shared.d.ts.
    Важно: Файлы Vintasoft.Twain.js и Vintasoft.Twain.d.ts используют VintaSoft Web TWAIN сервис для доступа к локальным TWAIN и SANE сканерам в Windows и Linux.


    Для получения изображения от TWAIN/SANE сканера необходимо:
    1. Создайте экземпляр класса WebServiceJS, который будет использоваться для связи с локальным Vintasoft Web TWAIN сервисом.
    2. Создайте экземпляр класса WebTwainDeviceManagerJS и укажите, что менеджер TWAIN/SANE устройств должен использовать веб-сервис, созданный на шаге 1.
    3. Создайте экземпляр класса WebTwainDeviceManagerInitSettingsJS и укажите параметры менеджера TWAIN/SANE устройств.
    4. Вызовите функцию WebTwainDeviceManagerJS.open для открытия менеджера устройств.
    5. Если функция WebTwainDeviceManagerJS.open выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 19; в другом случае перейдите к следующему шагу.
    6. Вызовите функцию WebTwainDeviceManagerJS.get_Devices для получения списка доступных TWAIN/SANE устройств.
    7. Если функция WebTwainDeviceManagerJS.get_Devices выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 17; в другом случае перейдите к следующему шагу.
    8. Выберите нужное устройство (экземпляр класса WebTwainDeviceJS) из доступных устройств.
    9. Вызовите функцию WebTwainDeviceJS.open для открытия устройства.
    10. Если функция WebTwainDeviceJS.open выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 17; в другом случае перейдите к следующему шагу.
    11. При необходимости установите возможности устройства (тип пикселя, разрешение изображения, включите устройство подачи документов и т.д.).
    12. Вызовите функцию WebTwainDeviceJS.acquireModalSync для выполнения одного шага процесса получения изображения.
    13. Если функция WebTwainDeviceJS.acquireModalSync выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 15; в другом случае перейдите к следующему шагу.
    14. Обработайте результаты получения изображения:
      1. Если изображение получено с устройства (acquireModalResult.acquireModalState === 2), сохраните полученное изображение в коллекции изображений для дальнейшей обработки (отображения, обработки, сохранения, загрузки) и перейдите к шагу 12.
      2. Если сканирование завершилось неудачно (acquireModalResult.acquireModalState === 4), отобразите сообщение об ошибке, перейдите к шагу 12, т.к. нужно дождаться завершения получения изображения (data.acquireModalState === 0).
      3. Если сканирование завершено (acquireModalResult.acquireModalState === 9), перейдите к шагу 12, т.к. нужно дождаться завершения получения изображения (data.acquireModalState === 0).
      4. Если получение изображения завершено (acquireModalResult.acquireModalState === 0), перейдите к шагу 15.
    15. Вызовите функцию WebTwainDeviceJS.close для закрытия устройства.
    16. Если функция WebTwainDeviceJS.close выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 17; в другом случае перейдите к следующему шагу.
    17. Вызовите функцию WebTwainDeviceManagerJS.close для закрытия менеджера устройств.
    18. Если функция WebTwainDeviceManagerJS.close выдала исключение, отобразите сообщение об ошибке; в другом случае перейдите к следующему шагу.
    19. Получение изображения завершено.


    Вот JavaScript код, который демонстрирует как получить изображения от TWAIN/SANE сканера:
    <script type="text/javascript">
        // acquire images from TWAIN/SANE scanner
        __acquireImageFromTwainScanner();
    
    
    
        /**
         * Acquires images from TWAIN/SANE scanner.
         */
        function __acquireImageFromTwainScanner() {
            // register the evaluation version of VintaSoft Web TWAIN service
            // please read how to get evaluation license in documentation: https://www.vintasoft.com/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 and SANE devices
            var twainService = new Vintasoft.Shared.WebServiceControllerJS(serviceUrl);
    
            // TWAIN/SANE 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/SANE device
                device = deviceManager.get_DefaultDevice();
    
                // open device without UI
                device.open(false);
    
                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();
                            // get image as Base64 string
                            var bitmapAsBase64String = acquiredImage.getAsBase64String();
                            // update image preview
                            var previewImageElement = document.getElementById('previewImage');
                            previewImageElement.src = bitmapAsBase64String;
                            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();
            }
        }
    </script>
    
    


    Вот TypeScript код, который демонстрирует как получить изображения от TWAIN/SANE сканера:
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'twain-scanning-demo',
      templateUrl: './twain-scanning-demo.component.html'
    })
    export class TwainScanningDemoComponent {
    
      ngOnInit() {
        // acquire images from TWAIN/SANE scanner
        this.__acquireImageFromTwainScanner();
      }
    
    
      /**
      * Acquires images from TWAIN/SANE scanner.
      */
      __acquireImageFromTwainScanner() {
        // register the evaluation version of VintaSoft Web TWAIN service
        // please read how to get evaluation license in documentation: https://www.vintasoft.com/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 and SANE devices
        let twainService: Vintasoft.Shared.WebServiceControllerJS = new Vintasoft.Shared.WebServiceControllerJS(serviceUrl);
    
        // TWAIN/SANE 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/SANE device
          device = deviceManager.get_DefaultDevice();
    
          // open device without UI
          device.open(false);
    
          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();
                // get image as Base64 string
                let bitmapAsBase64String: string = acquiredImage.getAsBase64String();
                // update image preview
                let previewImageElement: HTMLImageElement = document.getElementById('previewImage') as HTMLImageElement;
                previewImageElement.src = bitmapAsBase64String;
                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();
        }
      }
    
    }