Numériser des images à l'aide d'une application web pour Windows et Linux

Catégorie du blog: TWAINWeb

08.04.2024

TWAIN est un protocole et une interface (API) standard qui définit l'interaction entre un programme et un scanner d'images. La norme TWAIN est développée par le groupe de travail TWAIN. La version 1 de la norme TWAIN définit l'interaction avec les scanners d'images pour Windows. La version 2 de la norme TWAIN définit l'interaction avec les scanners d'images pour Windows, macOS et Linux.
TWAIN est la norme la plus répandue pour les scanners d'images sous Windows. Presque tous les scanners d'images disposent d'un pilote TWAIN pour une utilisation sous Windows.
La norme TWAIN est moins répandue sous Linux et nos recherches (début 2024) ont montré que seul Kodak fournit des pilotes TWAIN pour l'utilisation de ses scanners d'images sous Linux.

SANE est une interface de programmation (API) qui offre un accès standardisé aux périphériques de numérisation d'images raster (scanners à plat, scanners portables, etc.). L'API SANE est libre de droits et ouverte à la discussion et au développement. C'est l'API de numérisation d'images la plus populaire sous Linux.
De nombreux fabricants de scanners ont créé des pilotes SANE pour leurs scanners d'images. Il existe également des pilotes SANE créés par la communauté SANE. Par conséquent, presque tous les scanners d'images modernes disposent d'un pilote SANE permettant d'utiliser le périphérique sous Linux.

Le kit de développement logiciel VintaSoft Twain .NET SDK fournit l'API JavaScript VintaSoft TWAIN et le service Web VintaSoft TWAIN, permettant ainsi aux développeurs web de créer rapidement et facilement une application web multiplateforme pour l'acquisition d'images depuis un scanner TWAIN ou SANE sous Windows et Linux. Les applications web ainsi développées sont compatibles avec tous les navigateurs web courants.

L'API JavaScript VintaSoft TWAIN permet d'interagir avec les scanners d'images TWAIN et SANE sous Windows et Linux. Autrement dit, le code côté client de l'application web est identique pour les deux systèmes d'exploitation. Pour utiliser l'API JavaScript VintaSoft TWAIN, vous devez installer le service Web TWAIN de VintaSoft sur votre ordinateur. En effet, l'API envoie des requêtes à ce service pour accéder aux scanners d'images TWAIN et SANE locaux. Pour plus d'informations sur l'API JavaScript VintaSoft TWAIN, veuillez consulter la documentation en ligne destinée aux développeurs web: https://www.vintasoft.com/docs/vstwain-dotnet-web/

Le service "VintaSoft Web TWAIN" fournit une API Web permettant à tous les utilisateurs de l'ordinateur d'accéder aux scanners TWAIN locaux. Il existe une version de ce service pour Windows et une autre pour Linux.
La version Windows du service VintaSoft Web TWAIN peut être installée sur n'importe quel ordinateur Windows à l'aide d'un programme d'installation Windows. Pour obtenir des informations détaillées sur la version Windows du service VintaSoft Web TWAIN, veuillez consulter le lien suivant: https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service.html
La version Linux du service VintaSoft Web TWAIN peut être installée sur un ordinateur Ubuntu, Debian ou Fedora à l'aide d'un paquet .deb ou .rpm. Pour plus d'informations sur la version Linux du service VintaSoft Web TWAIN, veuillez consulter le lien suivant: https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service_for_Linux.html

Pour créer une application web qui acquiert des images à partir d'un scanner d'images TWAIN ou SANE dans un navigateur web sous Windows et Linux, vous devez suivre les étapes suivantes:

Voici un code JavaScript qui montre comment acquérir des images à partir d'un scanner d'images TWAIN ou SANE dans un navigateur web (Firefox, Chrome, Edge, Opera, etc.) sous Windows et 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();
    }
}