VintaSoft Twain .NET SDK 15.4: Documentation for Web developer
In This Topic
Save scanned images
In This Topic
Vintasoft Web TWAIN service allows to save the image acquired from TWAIN/WIA/SANE/eSCL image scanner to a local file or get the image file as a Base64 string. The image can be saved as new BMP, JPEG, PNG, TIFF file or PDF file (version 1.4). Also the image can be added to an existing TIFF file or PDF file (version from 1.0 to 1.4).

Here is JavaScript code that demonstrates how to acquire images from TWAIN/WIA/SANE/eSCL image scanner and save acquired images to JPEG files:
// acquire images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to JPEG files
__acquireImagesFromTwainScannerAndSaveToJpegFiles();



/**
 * Acquires images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to JPEG files.
 */
function __acquireImagesFromTwainScannerAndSaveToJpegFiles() {
    // 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/WIA/SANE/eSCL/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 device without UI
        device.open(false);

        // 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;
        var savedImageCount = 0;
        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 collection of acquired images
                    acquiredImages.add(acquiredImage);

                    // save acquired image to "result.jpg" file
                    acquiredImages.saveImages("d:\\result" + savedImageCount + ".jpg", false, [acquiredImage.get_Id()]);
                    // increase count of saved images
                    savedImageCount = savedImageCount + 1;

                    // 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 acquire images from TWAIN/WIA/SANE/eSCL image scanner and save acquired images to JPEG files:
import { Component } from '@angular/core';

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

  ngOnInit() {
    // acquire images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to JPEG files
    this.__acquireImagesFromTwainScannerAndSaveToJpegFiles();
  }


  /**
   * Acquires images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to JPEG files.
   */
  __acquireImagesFromTwainScannerAndSaveToJpegFiles() {
    // 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/WIA/SANE/eSCL/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 twainDevice: Vintasoft.Twain.WebTwainDeviceJS = null;
    try {
      // get the default TWAIN/WIA/SANE/eSCL device
      twainDevice = deviceManager.get_DefaultDevice();

      // open device without UI
      device.open(false);

      // 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;
      let imageCount: number = 0;
      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 collection of acquired images
            acquiredImages.add(acquiredImage);

            // save acquired image to "result.jpg" file
            acquiredImages.saveImages("d:\\result" + imageCount + ".jpg", false, [acquiredImage.get_Id()]);
            // increase count of saved images
            imageCount = imageCount + 1;

            // 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();
    }
  }

}



Here is JavaScript code that demonstrates how to acquire images from TWAIN/WIA/SANE/eSCL image scanner and save acquired images to a multipage TIFF file:
// acquire images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to TIFF file
__acquireImagesFromTwainScannerAndSaveToTiffFile();



/**
 * Acquires images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to TIFF file.
 */
function __acquireImagesFromTwainScannerAndSaveToTiffFile() {
    // 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/WIA/SANE/eSCL/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 twainDevice = null;
    try {
        // open device manager
        deviceManager.open(deviceManagerInitSetting);

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

        // open device without UI
        device.open(false);

        // 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 = twainDevice.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 collection of acquired images
                    acquiredImages.add(acquiredImage);

                    // get TIFF encoder settings
                    var tiffEncoderSettings = acquiredImages.get_TiffEncoderSettings();
                    // specify that TIFF encoder must create TIFF images with strips (not tiles)
                    tiffEncoderSettings.set_UseTiles(false);

                    // save acquired image to "result.tif" file
                    acquiredImages.saveImages("d:\\result.tif", false, [ acquiredImage.get_Id() ]);

                    // 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();
    }
}



Here is TypeScript code that demonstrates how to acquire images from TWAIN/WIA/SANE/eSCL image scanner and save acquired images to a multipage TIFF file:
import { Component } from '@angular/core';

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

  ngOnInit() {
    // acquire images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to TIFF file
    this.__acquireImagesFromTwainScannerAndSaveToTiffFile();
  }


  /**
   * Acquires images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to TIFF file.
   */
  __acquireImagesFromTwainScannerAndSaveToTiffFile() {
    // 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/WIA/SANE/eSCL/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 twainDevice: Vintasoft.Twain.WebTwainDeviceJS = null;
    try {
      // get the default TWAIN/WIA/SANE/eSCL device
      twainDevice = deviceManager.get_DefaultDevice();

      // open device without UI
      device.open(false);

      // 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 = 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 collection of acquired images
            acquiredImages.add(acquiredImage);

            // get TIFF encoder settings
            let tiffEncoderSettings: Vintasoft.Twain.WebTwainTiffEncoderSettingsJS = acquiredImages.get_TiffEncoderSettings();
            // specify that TIFF encoder must create TIFF images with strips (not tiles)
            tiffEncoderSettings.set_UseTiles(false);

            // save acquired image to "result.tif" file
            acquiredImages.saveImages("d:\\result.tif", false, [acquiredImage.get_Id()]);

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

          case 4:   // 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();
    }
  }

}



Here is JavaScript code that demonstrates how to acquire images from TWAIN/WIA/SANE/eSCL image scanner and save acquired images to a multipage PDF file:
// acquire images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to PDF file
__acquireImagesFromTwainScannerAndSaveToPdfFile();



/**
 * Acquires images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to PDF file.
 */
function __acquireImagesFromTwainScannerAndSaveToPdfFile() {
    // 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/WIA/SANE/eSCL/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 twainDevice = null;
    try {
        // open device manager
        deviceManager.open(deviceManagerInitSetting);

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

        // open device without UI
        device.open(false);

        // 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 = twainDevice.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 collection of acquired images
                    acquiredImages.add(acquiredImage);

                    // save acquired image to "result.pdf" file
                    acquiredImages.saveImages("d:\\result.pdf", false, [ acquiredImage.get_Id() ]);

                    // 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();
    }
}



Here is TypeScript code that demonstrates how to acquire images from TWAIN/WIA/SANE/eSCL image scanner and save acquired images to a multipage PDF file:
import { Component } from '@angular/core';

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

  ngOnInit() {
    // acquire images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to PDF file
    this.__acquireImagesFromTwainScannerAndSaveToPdfFile();
  }


  /**
   * Acquires images from TWAIN/WIA/SANE/eSCL image scanner and saves acquired images to PDF file.
   */
  __acquireImagesFromTwainScannerAndSaveToPdfFile() {
    // 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/WIA/SANE/eSCL/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 twainDevice: Vintasoft.Twain.WebTwainDeviceJS = null;
    try {
      // get the default TWAIN/WIA/SANE/eSCL device
      twainDevice = deviceManager.get_DefaultDevice();

      // open device without UI
      device.open(false);

      // 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 = 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 collection of acquired images
            acquiredImages.add(acquiredImage);

            // save acquired image to "result.pdf" file
            acquiredImages.saveImages("d:\\result.pdf", false, [acquiredImage.get_Id()]);

            // 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();
    }
  }

}