VintaSoft Twain .NET SDK 15.1: Documentation for Web developer
In This Topic
    How to scan negatives using TWAIN scanner?
    In This Topic

    Scan negatives using TWAIN scanner

    If you want to scan negatives using TWAIN scanner, you should pass the WebLightPathEnumJS.Transmissive value to the the WebTwainDeviceJS.set_LightPath function.

    Here is JavaScript code that demonstrates how to scan negatives using TWAIN scanner:
    // scan negatives using TWAIN scanner
    __scanNegativesUsingTwainScanner();
    
    
    
    /**
     * Scans negatives using TWAIN scanner.
     */
    function __scanNegativesUsingTwainScanner() {
        // 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 device
            device = deviceManager.get_DefaultDevice();
    
            // open device without UI
            device.open(false);
    
            // specify that color images must be acquired from TWAIN scanner
            device.set_PixelType(new Vintasoft.Twain.WebPixelTypeEnumJS("RGB"));
            // specify that negatives must be acquired from TWAIN scanner
            device.set_LightPath(new Vintasoft.Twain.WebLightPathEnumJS("Transmissive"));
    
            // a collection that stores images, which are acquired from TWAIN/SANE 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();
        }
    }
    
    


    Here is TypeScript code that demonstrates how to scan negatives using TWAIN scanner:
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'twain-scanning-demo',
      templateUrl: './twain-scanning-demo.component.html'
    })
    export class TwainScanningDemoComponent {
    
      ngOnInit() {
        // scan negatives using TWAIN scanner
        __scanNegativesUsingTwainScanner();
      }
    
    
      /**
       * Scans negatives using TWAIN scanner.
       */
      __scanNegativesUsingTwainScanner() {
        // 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 twainDevice: Vintasoft.Twain.WebTwainDeviceJS = null;
        try {
          // get the default TWAIN device
          twainDevice = deviceManager.get_DefaultDevice();
    
          // open device without UI
          twainDevice.open(false);
    
          // specify that color images must be acquired from TWAIN scanner
          twainDevice.set_PixelType(new Vintasoft.Twain.WebPixelTypeEnumJS("RGB"));
          // specify that negatives must be acquired from TWAIN scanner
          twainDevice.set_LightPath(new Vintasoft.Twain.WebLightPathEnumJS("Transmissive"));
    
          // a collection that stores images, which are acquired from TWAIN/SANE 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 = twainDevice.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 (twainDevice != null) {
            // close the device
            twainDevice.close();
          }
          // close the device manager
          deviceManager.close();
        }
      }
    
    }
    
    


    Scan negatives using SANE scanner

    If you want to scan negatives using SANE scanner, you should set the scan mode allowing to scan negatives, for example, HP scanners have "Negative" scan mode. The scan mode of SANE scanner can be set using the WebTwainDeviceJS.set_SaneScanMode function.