Digitalizar imagens usando um aplicativo web para Windows e Linux

Categoria do blog: TWAINWeb

08.04.2024

TWAIN é um protocolo e interface (API) padrão que define a interação entre um programa e um scanner de imagens. O padrão TWAIN está sendo desenvolvido pelo Grupo de Trabalho TWAIN. A versão 1 do padrão TWAIN define a interação com scanners de imagem para Windows. A versão 2 do padrão TWAIN define a interação com scanners de imagem para Windows, macOS e Linux.
O padrão TWAIN é o padrão mais popular para scanners de imagem no Windows. Quase todos os scanners de imagem possuem um driver TWAIN para uso no Windows.
O padrão TWAIN não é tão popular no Linux e nossa pesquisa (no início de 2024) mostrou que apenas a Kodak fornece drivers TWAIN para usar seus scanners de imagem no Linux.

A API SANE é uma interface de programação de aplicativos (API) que fornece acesso padronizado a dispositivos de digitalização de imagens raster (scanners de mesa, scanners portáteis, etc.). A API SANE é de domínio público e está aberta à discussão e ao desenvolvimento. A API SANE é a API de scanner de imagem mais popular para Linux.
Muitos fabricantes de scanners criaram drivers SANE para seus scanners de imagem. Existem também drivers SANE criados pela comunidade SANE. Como resultado, quase todos os scanners de imagem modernos possuem um driver SANE que permite usar o dispositivo no Linux.

O VintaSoft Twain .NET SDK fornece a API JavaScript VintaSoft TWAIN e o serviço VintaSoft Web TWAIN, que permitem ao desenvolvedor web criar de forma rápida e fácil um aplicativo web compatível com vários navegadores para adquirir imagens de scanners TWAIN ou SANE no Windows e no Linux. Os aplicativos web desenvolvidos podem ser usados ​​em todos os navegadores web populares.

A API JavaScript TWAIN da VintaSoft permite trabalhar com scanners de imagem TWAIN e SANE no Windows e no Linux. Ou seja, o lado cliente da aplicação web utiliza o mesmo código para interagir com scanners de imagem TWAIN e SANE em ambos os sistemas. Para utilizar a API JavaScript TWAIN da VintaSoft, é necessário instalar o serviço Web TWAIN da VintaSoft no seu computador local, pois a API envia requisições para o serviço Web TWAIN da VintaSoft para obter acesso aos scanners de imagem TWAIN e SANE locais. Para obter informações detalhadas sobre a API JavaScript TWAIN da VintaSoft, consulte a documentação online para desenvolvedores web aqui: https://www.vintasoft.com/docs/vstwain-dotnet-web/

O serviço VintaSoft Web TWAIN fornece uma API Web para acessar scanners TWAIN locais para todos os usuários do computador local. Há uma versão do serviço VintaSoft Web TWAIN para Windows e Linux.
A versão para Windows do serviço VintaSoft Web TWAIN pode ser instalada em qualquer computador Windows usando um instalador do Windows. Para obter informações detalhadas sobre a versão para Windows do serviço VintaSoft Web TWAIN, consulte o seguinte link: https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service.html
A versão Linux do serviço VintaSoft Web TWAIN pode ser instalada em computadores Ubuntu, Debian e Fedora usando pacotes .deb ou .rpm. Para obter informações detalhadas sobre a versão Linux do serviço VintaSoft Web TWAIN, consulte o seguinte link: https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service_for_Linux.html

Para criar um aplicativo web que adquira imagens de um scanner de imagens TWAIN ou SANE em um navegador web no Windows e no Linux, você deve concluir as seguintes etapas:

Aqui está um código JavaScript que mostra como adquirir imagens de um scanner de imagens TWAIN ou SANE em um navegador da web (Firefox, Chrome, Edge, Opera, etc.) no 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();
    }
}