Սկանավորեք պատկերները Windows-ի և Linux-ի վեբ հավելվածի միջոցով

Բլոգի կատեգորիա՝ TWAINWeb

08.04.2024

TWAIN-ը ստանդարտ արձանագրություն և ինտերֆեյս (API) է, որը սահմանում է ծրագրի և պատկերի սկաների միջև փոխազդեցությունը: TWAIN ստանդարտը մշակվում է TWAIN աշխատանքային խմբի կողմից: TWAIN ստանդարտի 1-ին տարբերակը սահմանում է պատկերի սկաներների հետ փոխազդեցությունը Windows-ի համար: TWAIN ստանդարտի 2-րդ տարբերակը սահմանում է պատկերի սկաներների հետ փոխազդեցությունը Windows-ի, macOS-ի, Linux-ի համար:
TWAIN ստանդարտը Windows-ի համար պատկերի սկաներների ամենատարածված ստանդարտն է: Գրեթե ցանկացած պատկերի սկաներ ունի TWAIN դրայվեր Windows-ում օգտագործելու համար:
TWAIN ստանդարտը Linux-ում այնքան էլ տարածված չէ, և մեր հետազոտությունը (2024 թվականի սկզբի դրությամբ) ցույց տվեց, որ միայն Kodak-ն է տրամադրում TWAIN դրայվերներ Linux-ում իրենց պատկերի սկաներներն օգտագործելու համար:

SANE-ը ծրագրային ապահովման ինտերֆեյս է (API), որը ստանդարտացված մուտք է ապահովում ռաստրային պատկերի սկաներների սարքերին (հարթակ սկաներներ, ձեռքի սկաներներ և այլն): SANE API-ն հանրային սեփականություն է և բաց է հանրային քննարկման և մշակման համար: SANE API-ն Linux-ի համար ամենատարածված պատկերի սկաներների API-ն է:
Սկաներների շատ արտադրողներ ստեղծել են SANE դրայվերներ իրենց պատկերի սկաներների համար: Կան նաև SANE դրայվերներ, որոնք ստեղծվել են SANE համայնքի կողմից: Արդյունքում, գրեթե ցանկացած ժամանակակից պատկերի սկաներ ունի SANE դրայվեր, որը թույլ է տալիս օգտագործել սարքը Linux-ում:

VintaSoft Twain .NET SDK-ն տրամադրում է VintaSoft TWAIN JavaScript API և VintaSoft Web TWAIN ծառայություն, որոնք թույլ են տալիս վեբ մշակողին արագ և հեշտությամբ ստեղծել միջբրաուզերային վեբ հավելված՝ Windows-ում և Linux-ում TWAIN-ից կամ SANE սկաներից պատկերներ ստանալու համար: Մշակված վեբ հավելվածները կարող են օգտագործվել բոլոր հայտնի վեբ բրաուզերներում:

VintaSoft TWAIN JavaScript API-ն API է, որը թույլ է տալիս աշխատել TWAIN և SANE պատկերի սկաներների հետ Windows-ում և Linux-ում, այսինքն՝ վեբ հավելվածի հաճախորդային կողմը օգտագործում է նույն կոդը՝ Windows-ում և Linux-ում TWAIN և SANE պատկերի սկաներների հետ աշխատելու համար: VintaSoft TWAIN JavaScript API-ի աշխատանքի համար դուք պետք է տեղադրեք VintaSoft Web TWAIN ծառայությունը ձեր տեղական համակարգչում:քանի որ VintaSoft TWAIN JavaScript API-ն հարցումներ է ուղարկում VintaSoft Web TWAIN ծառայությանը՝ տեղական TWAIN և SANE պատկերի սկաներներին մուտք գործելու համար: VintaSoft TWAIN JavaScript API-ի մասին մանրամասն տեղեկությունները կարող եք կարդալ վեբ մշակողների համար նախատեսված առցանց փաստաթղթերում՝ այստեղ. https://www.vintasoft.com/docs/vstwain-dotnet-web/

VintaSoft Web TWAIN ծառայությունը տրամադրում է վեբ API՝ տեղական TWAIN սկաներներին տեղական համակարգչի բոլոր օգտատերերի համար մուտք գործելու համար: VintaSoft Web TWAIN ծառայության տարբերակ կա Windows-ի և Linux-ի համար:
VintaSoft Web TWAIN ծառայության Windows տարբերակը կարող է տեղադրվել ցանկացած Windows համակարգչի վրա՝ օգտագործելով Windows տեղադրիչը: VintaSoft Web TWAIN ծառայության Windows տարբերակի մասին մանրամասն տեղեկությունները կարող եք կարդալ այստեղ. https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service.html
VintaSoft Web TWAIN ծառայության Linux տարբերակը կարող է տեղադրվել Ubuntu, Debian, Fedora համակարգիչների վրա՝ օգտագործելով .deb- կամ .rpm-packet: VintaSoft Web TWAIN ծառայության Linux տարբերակի մասին մանրամասն տեղեկությունները կարող եք կարդալ այստեղ՝ https://www.vintasoft.com/docs/vstwain-dotnet-web/Programming-Twain_Web-Vintasoft_Web_TWAIN_service_for_Linux.html

Windows-ում և Linux-ում վեբ զննարկիչում TWAIN կամ SANE պատկերի սկաներից պատկերներ ստացող վեբ ծրագիր ստեղծելու համար դուք պետք է կատարեք հետևյալ քայլերը՝

Ահա JavaScript կոդը, որը ցույց է տալիս, թե ինչպես ստանալ պատկերներ TWAIN կամ SANE պատկերի սկաներից վեբ զննարկիչում (Firefox, Chrome, Edge, Opera և այլն) Windows և 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();
    }
}