JavaScript классы для получения изображений от TWAIN/SANE сканера
В этом разделе
Файл Vintasoft.Twain.js содержит классы, которые позволяют получать изображения от локального TWAIN/SANE сканера:
- WebTwainDeviceManagerJS класс - JavaScript класс, который позволяет работать с менеджером TWAIN/SANE устройств.
- WebTwainDeviceManagerInitSettingsJS - JavaScript класс, который представляет настройки для инициализации менеджера TWAIN/SANE устройств.
- WebTwainDeviceJS - JavaScript класс, который позволяет работать с TWAIN/SANE устройством.
- WebTwainDeviceDocumentFeederJS - JavaScript класс, который позволяет работать с устройством автоматической подачи документов TWAIN/SANE устройства.
- WebAcquiredImageJS - JavaScript класс, который позволяет работать (получать информацию об изображении, получать миниатюру, получать растровое изображение, обрабатывать изображение) с изображением, полученным от TWAIN/SANE устройства.
- WebAcquiredImageCollectionJS - JavaScript класс, который позволяет работать (добавлять, удалять, сохранять) с коллекцией изображений, полученных от TWAIN/SANE устройства.
- WebTwainCapabilityInfoJS - JavaScript класс, который содержит информацию о значении возможности TWAIN устройства.
- WebTwainCapabilitySupportedValuesJS - JavaScript класс, который содержит информацию о поддерживаемых значениях возможности TWAIN устройства.
- WebTwainImageLayoutJS - JavaScript класс, который содержит информацию о макете изображения с TWAIN устройства.
- WebTwainFrameJS - JavaScript класс, определяющий прямоугольник изображения в единицах измерения, используемых TWAIN устройством.
- WebTwainRangeJS - JavaScript класс, который содержит информацию о диапазоне значений.
- WebTwainDeviceAcquireModalResultJS - JavaScript, который содержит информацию о результате выполнения функции WebTwainDeviceJS.acquireModalSync().
- WebAcquiredImageIsBlankResultJS - JavaScript класс, который содержит информацию о результате выполнения функции WebAcquiredImageJS.isBlank.
- WebDeviceCapabilityIdEnumJS - JavaScript класс, который представляет перечисление, определяющее доступные идентификаторы возможностей TWAIN устройства.
- Информацию о других перечислениях можно найти в справочнике по VintaSoft TWAIN JavaScript API.
Файл 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 сканера необходимо:
- Создайте экземпляр класса WebServiceJS, который будет использоваться для связи с локальным Vintasoft Web TWAIN сервисом.
- Создайте экземпляр класса WebTwainDeviceManagerJS и укажите, что менеджер TWAIN/SANE устройств должен использовать веб-сервис, созданный на шаге 1.
- Создайте экземпляр класса WebTwainDeviceManagerInitSettingsJS и укажите параметры менеджера TWAIN/SANE устройств.
- Вызовите функцию WebTwainDeviceManagerJS.open для открытия менеджера устройств.
- Если функция WebTwainDeviceManagerJS.open выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 19; в другом случае перейдите к следующему шагу.
- Вызовите функцию WebTwainDeviceManagerJS.get_Devices для получения списка доступных TWAIN/SANE устройств.
- Если функция WebTwainDeviceManagerJS.get_Devices выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 17; в другом случае перейдите к следующему шагу.
- Выберите нужное устройство (экземпляр класса WebTwainDeviceJS) из доступных устройств.
- Вызовите функцию WebTwainDeviceJS.open для открытия устройства.
- Если функция WebTwainDeviceJS.open выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 17; в другом случае перейдите к следующему шагу.
- При необходимости установите возможности устройства (тип пикселя, разрешение изображения, включите устройство подачи документов и т.д.).
- Вызовите функцию WebTwainDeviceJS.acquireModalSync для выполнения одного шага процесса получения изображения.
- Если функция WebTwainDeviceJS.acquireModalSync выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 15; в другом случае перейдите к следующему шагу.
-
Обработайте результаты получения изображения:
- Если изображение получено с устройства (acquireModalResult.acquireModalState === 2), сохраните полученное изображение в коллекции изображений для дальнейшей обработки (отображения, обработки, сохранения, загрузки) и перейдите к шагу 12.
- Если сканирование завершилось неудачно (acquireModalResult.acquireModalState === 4), отобразите сообщение об ошибке, перейдите к шагу 12, т.к. нужно дождаться завершения получения изображения (data.acquireModalState === 0).
- Если сканирование завершено (acquireModalResult.acquireModalState === 9), перейдите к шагу 12, т.к. нужно дождаться завершения получения изображения (data.acquireModalState === 0).
- Если получение изображения завершено (acquireModalResult.acquireModalState === 0), перейдите к шагу 15.
- Вызовите функцию WebTwainDeviceJS.close для закрытия устройства.
- Если функция WebTwainDeviceJS.close выдала исключение, отобразите сообщение об ошибке и перейдите к шагу 17; в другом случае перейдите к следующему шагу.
- Вызовите функцию WebTwainDeviceManagerJS.close для закрытия менеджера устройств.
- Если функция WebTwainDeviceManagerJS.close выдала исключение, отобразите сообщение об ошибке; в другом случае перейдите к следующему шагу.
- Получение изображения завершено.
Вот 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.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 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.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 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();
}
}
}