Как установить значение возможности/опции TWAIN/SANE сканера?
В этом разделе
TWAIN стандарт определяет множество стандартных возможностей (XferCount, IPixelType, DoubleFeedDetection, IContrast, IRotation, ...), которые могут поддерживаться TWAIN устройством. Также TWAIN устройство может предоставлять пользовательские возможности, определяемые производителем сканера.
Если Вы хотите установить текущее значение возможности TWAIN устройства, используйте функцию
WebTwainDeviceJS.setCapability.
SANE API не определяет стандартные опции для SANE устройства, SANE API просто определяет правила, которые позволяют создавать опции, которые являются самодокументированными.
Если Вы хотите установить текущее значение опции SANE устройства, используйте функцию
WebTwainDeviceJS.setCapability.
Вот JavaScript код, который демонстрирует как установить значение возможности DuplexEnabled для TWAIN/SANE сканера:
// set value of DuplexEnabled capability of TWAIN/SANE scanner
__setDuplexEnabledCapValueOfTwainScanner();
/**
* Sets value of DuplexEnabled capability of TWAIN/SANE scanner.
*/
function __setDuplexEnabledCapValueOfTwainScanner() {
// 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 TWAIN device (do not display device UI but display dialog with image scanning progress)
device.open(false, true);
// if device is SANE device
if (device.get_DeviceName().substring(0, 4) == "Sane") {
// specify that images must be acquired from source "ADF Duplex"
device.set_SaneScanSource("ADF Duplex");
}
// if device is TWAIN device
else {
// set value of DuplexEnabled capability of TWAIN scanner
device.setCapability(new Vintasoft.Twain.WebDeviceCapabilityIdEnumJS("DuplexEnabled"), true);
}
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();
}
}
Вот TypeScript код, который демонстрирует как установить значение возможности DuplexEnabled для TWAIN/SANE сканера:
import { Component } from '@angular/core';
@Component({
selector: 'twain-scanning-demo',
templateUrl: './twain-scanning-demo.component.html'
})
export class TwainScanningDemoComponent {
ngOnInit() {
// set value of DuplexEnabled capability of TWAIN/SANE scanner
this.__setDuplexEnabledCapValueOfTwainScanner();
}
/**
* Sets value of DuplexEnabled capability of TWAIN/SANE scanner.
*/
__setDuplexEnabledCapValueOfTwainScanner() {
// 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 TWAIN device (do not display device UI but display dialog with image scanning progress)
device.open(false, true);
// if device is SANE device
if (device.get_DeviceName().substring(0, 4) == "Sane") {
// specify that images must be acquired from source "ADF Duplex"
device.set_SaneScanSource("ADF Duplex");
}
// if device is TWAIN device
else {
// set value of DuplexEnabled capability of TWAIN scanner
device.setCapability(new Vintasoft.Twain.WebDeviceCapabilityIdEnumJS("DuplexEnabled"), true);
}
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();
}
}
}