Scansiona immagini tramite applicazione Web per Windows e Linux

Categoria del blog: TWAINWeb

08.04.2024

TWAIN è un protocollo e un'interfaccia standard (API) che definisce l'interazione tra un programma e uno scanner di immagini. Lo standard TWAIN è in fase di sviluppo da parte del TWAIN Working Group. La versione 1 dello standard TWAIN definisce l'interazione con gli scanner di immagini per Windows. La versione 2 dello standard TWAIN definisce l'interazione con gli scanner di immagini per Windows, macOS e Linux.
Lo standard TWAIN è lo standard più diffuso per gli scanner di immagini per Windows. Quasi tutti gli scanner di immagini dispongono di un driver TWAIN per l'utilizzo in Windows.
Lo standard TWAIN non è altrettanto diffuso in Linux e la nostra ricerca (a inizio 2024) ha dimostrato che solo Kodak fornisce driver TWAIN per l'utilizzo dei propri scanner di immagini in Linux.

SANE è un'interfaccia di programmazione applicativa (API) che fornisce un accesso standardizzato ai dispositivi di scansione di immagini raster (scanner piani, scanner portatili, ecc.). L'API SANE è di pubblico dominio ed è aperta alla discussione e allo sviluppo pubblico. L'API SANE è l'API per scanner di immagini più diffusa per Linux.
Molti produttori di scanner hanno creato driver SANE per i propri scanner di immagini. Sono disponibili anche driver SANE creati dalla comunità SANE. Di conseguenza, quasi tutti gli scanner di immagini moderni dispongono di driver SANE che consentono di utilizzare il dispositivo in Linux.

VintaSoft Twain .NET SDK fornisce l'API JavaScript TWAIN di VintaSoft e il servizio Web TWAIN di VintaSoft, che consentono allo sviluppatore web di creare in modo rapido e semplice un'applicazione web multi-browser per l'acquisizione di immagini da scanner TWAIN o SANE in Windows e Linux. Le applicazioni web sviluppate possono essere utilizzate in tutti i browser web più diffusi.

VintaSoft TWAIN JavaScript API è un'API che consente di lavorare con scanner di immagini TWAIN e SANE in Windows e Linux, ovvero il lato client dell'applicazione web utilizza lo stesso codice per lavorare con scanner di immagini TWAIN e SANE in Windows e Linux. Per utilizzare l'API JavaScript TWAIN di VintaSoft, è necessario installare il servizio VintaSoft Web TWAIN sul computer locale, poiché l'API JavaScript TWAIN di VintaSoft invia richieste al servizio VintaSoft Web TWAIN per accedere agli scanner di immagini TWAIN e SANE locali. Per informazioni dettagliate sull'API JavaScript TWAIN di VintaSoft, consultare la documentazione online per sviluppatori web qui: https://www.vintasoft.com/docs/vstwain-dotnet-web/

Il servizio VintaSoft Web TWAIN fornisce un'API Web per l'accesso agli scanner TWAIN locali per tutti gli utenti del computer locale. Esiste una versione del servizio VintaSoft Web TWAIN per Windows e Linux.
La versione Windows del servizio VintaSoft Web TWAIN può essere installata su qualsiasi computer Windows utilizzando un programma di installazione di Windows. Per informazioni dettagliate sulla versione Windows del servizio VintaSoft Web TWAIN, leggere qui: https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service.html
La versione Linux del servizio VintaSoft Web TWAIN può essere installata su Ubuntu, Debian,Computer Fedora che utilizza pacchetti .deb o .rpm. Per informazioni dettagliate sulla versione Linux del servizio VintaSoft Web TWAIN, consultare qui: https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service_for_Linux.html

Per creare un'applicazione web che acquisisca immagini da uno scanner di immagini TWAIN o SANE in un browser web in Windows e Linux, è necessario completare i seguenti passaggi:

Ecco il codice JavaScript che mostra come acquisire immagini da uno scanner di immagini TWAIN o SANE in un browser web (Firefox, Chrome, Edge, Opera, ecc.) in Windows e Linux:
// synchronously acquire images from TWAIN/SANE scanner and saves acquired images to PDF file
__synchronouslyAcquireImagesFromTwainScannerAndSaveToPdfFile();



/**
 * Synchronously acquires images from TWAIN/SANE scanner and saves acquired images to PDF file.
 */
function __synchronouslyAcquireImagesFromTwainScannerAndSaveToPdfFile() {
    // 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/SANE device
        device = deviceManager.get_DefaultDevice();

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

        // create collection for images acquired from device
        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 collection of acquired images
                    acquiredImages.add(acquiredImage);
                    // save acquired image to "result.pdf" file
                    acquiredImages.saveImages("d:\\result.pdf", false, [ acquiredImage.get_Id() ]);
                    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();
    }
}