VintaSoft Twain .NET SDK 15.1: Documentation for Web developer
In This Topic
    How to acquire images with different horizontal and vertical resolutions from TWAIN/SANE scanner?
    In This Topic

    Acquire images with different horizontal and vertical resolutions from TWAIN scanner

    Here is JavaScript code that demonstrates how to acquire images with different horizontal and vertical resolutions from TWAIN scanner:
    // acquire images with different horizontal and vertical resolution from TWAIN scanner
    __acquireImageWithDifferentHorizontalAndVerticalResolutionsFromTwainScanner();
    
    
    
    /**
     * Acquires images with different horizontal and vertical resolution from TWAIN scanner.
     */
    function __acquireImageWithDifferentHorizontalAndVerticalResolutionsFromTwainScanner() {
        // 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 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 device
            device = deviceManager.get_DefaultDevice();
    
            // open device without UI
            device.open(false);
    
            // specify that acquired image must have 300 dpi horizontal resolution
            device.set_XResolution(300);
            // specify that acquired image must have 200 dpi vertical resolution
            device.set_XResolution(200);
    
            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();
        }
    }
    
    


    Here is TypeScript code that demonstrates how to acquire images with different horizontal and vertical resolutions from TWAIN scanner:
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'twain-scanning-demo',
      templateUrl: './twain-scanning-demo.component.html'
    })
    export class TwainScanningDemoComponent {
    
      ngOnInit() {
        // acquire images with different horizontal and vertical resolution from TWAIN scanner
        this.__acquireImageWithDifferentHorizontalAndVerticalResolutionsFromTwainScanner();
      }
    
    
      /**
       * Acquires images with different horizontal and vertical resolution from TWAIN scanner.
       */
      __acquireImageWithDifferentHorizontalAndVerticalResolutionsFromTwainScanner() {
        // 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 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 device
          device = deviceManager.get_DefaultDevice();
    
          // open device without UI
          device.open(false);
    
          // specify that acquired image must have 300 dpi horizontal resolution
          device.set_XResolution(300);
          // specify that acquired image must have 200 dpi vertical resolution
          device.set_XResolution(200);
    
          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();
        }
      }
    
    }
    
    


    Acquire images with different horizontal and vertical resolutions from SANE scanner

    SANE API does not define the standard option(s) allowing to set different horizontal and vertical resolutions for scanned images. Please see supported options of your SANE device.