web-dev-qa-db-fra.com

Impression de reçus Javascript à l'aide de l'imprimante POS

Dans une application Web, je souhaite imprimer un reçu à l'aide d'une imprimante POS (point de vente). Je veux le faire avec Javascript. Quelqu'un peut-il m'en donner un exemple?

30
Sachindra

Je sors ici, puisque votre question n'était pas très détaillée, que a) votre imprimante de reçus est une imprimante thermique qui a besoin de données brutes, b) que "de javascript" vous parlez d'imprimer à partir du navigateur Web et c) que vous n'avez pas accès pour envoyer des données brutes à partir du navigateur

Voici une applet Java qui résout tout cela pour vous, si j'ai raison à propos de ces hypothèses, vous avez besoin de Java, Flash ou Silverlight http://code.google .com/p/jzebra /

14
Scott Selby

Si vous parlez d'une application POS basée sur un navigateur, cela ne peut pas être fait hors de la boîte. Il existe plusieurs alternatives.

  1. Utilisez une applet comme le dit Scott Selby
  2. Imprimez depuis le serveur. S'il s'agit d'un serveur cloud, c'est-à-dire non connectable à l'imprimante de reçus, alors ce que vous pouvez faire est
    • À partir du serveur, générez-le sous forme de fichier PDF qui peut être créé pour faire apparaître une boîte de dialogue d'impression dans le navigateur
    • Utilisez quelque chose comme Google Cloud Print qui permettra de connecter des imprimantes à un service cloud
8
Craig

EDIT: 27 NOVEMBRE 2017 ─ LIENS BRISÉS

Les liens ci-dessous sur les articles écrits par David Kelley sont cassés .

Il existe des versions mises en cache du référentiel, ajoutez simplement cache: avant l'URL dans le navigateur Chrome et appuyez sur Entrée.


Cette solution est uniquement pour Google Chrome et À base de chrome navigateurs.

MODIFIER:

(*) Les liens sont rompus. Heureusement, j'ai trouvé ce référentiel qui contient la source du message dans les fichiers de démarque suivants: A | B

Ce lien* explique comment créer une interface Javascript pour les imprimantes ESC/POS à l'aide de Chrome/Chrome API USB (1)(2)Ce lien* explique comment se connecter à des périphériques USB à l'aide de chrome.usb.* API.

6
Richard Cotrina

J'ai récemment implémenté l'impression des reçus en appuyant simplement sur un bouton sur une page Web, sans avoir à saisir les options de l'imprimante. Je l'ai fait en utilisant EPSON javascript SDK for ePOS. Je l'ai testé sur EPSON TM-m imprimante de reçus.

Voici l exemple de code.

var printer = null;
var ePosDev = null;

function InitMyPrinter() {
    console.log("Init Printer");

    var printerPort = 8008;
    var printerAddress = "192.168.198.168";
    if (isSSL) {
        printerPort = 8043;
    }
    ePosDev = new epson.ePOSDevice();
    ePosDev.connect(printerAddress, printerPort, cbConnect);
}

//Printing
function cbConnect(data) {
    if (data == 'OK' || data == 'SSL_CONNECT_OK') {
        ePosDev.createDevice('local_printer', ePosDev.DEVICE_TYPE_PRINTER,
            {'crypto': false, 'buffer': false}, cbCreateDevice_printer);
    } else {
        console.log(data);
    }
}

function cbCreateDevice_printer(devobj, retcode) {
    if (retcode == 'OK') {
        printer = devobj;
        printer.timeout = 60000;
        printer.onreceive = function (res) { //alert(res.success);
            console.log("Printer Object Created");

        };
        printer.oncoveropen = function () { //alert('coveropen');
            console.log("Printer Cover Open");

        };
    } else {
        console.log(retcode);
        isRegPrintConnected = false;
    }
}

function print(salePrintObj) {
    debugger;
    if (isRegPrintConnected == false
        || printer == null) {
        return;
    }
    console.log("Printing Started");


    printer.addLayout(printer.LAYOUT_RECEIPT, 800, 0, 0, 0, 35, 0);
    printer.addTextAlign(printer.ALIGN_CENTER);
    printer.addTextSmooth(true);
    printer.addText('\n');
    printer.addText('\n');

    printer.addTextDouble(true, true);
    printer.addText(CompanyName + '\n');

    printer.addTextDouble(false, false);
    printer.addText(CompanyHeader + '\n');
    printer.addText('\n');

    printer.addTextAlign(printer.ALIGN_LEFT);
    printer.addText('DATE: ' + currentDate + '\t\t');

    printer.addTextAlign(printer.ALIGN_RIGHT);
    printer.addText('TIME: ' + currentTime + '\n');

    printer.addTextAlign(printer.ALIGN_LEFT);

    printer.addTextAlign(printer.ALIGN_RIGHT);
    printer.addText('REGISTER: ' + RegisterName + '\n');
    printer.addTextAlign(printer.ALIGN_LEFT);
    printer.addText('SALE # ' + SaleNumber + '\n');

    printer.addTextAlign(printer.ALIGN_CENTER);
    printer.addTextStyle(false, false, true, printer.COLOR_1);
    printer.addTextStyle(false, false, false, printer.COLOR_1);
    printer.addTextDouble(false, true);
    printer.addText('* SALE RECEIPT *\n');
    printer.addTextDouble(false, false);
....
....
....

}
5
Habib Sheikh

J'ai imprimé le formulaire javascript sur une imprimante thermique Star Micronics Webprnt TSP 654ii. Cette imprimante est une imprimante réseau filaire et vous pouvez dessiner le contenu sur un canevas HTML et faire une demande HTTP pour imprimer. La seule mise en garde est que cette imprimante ne prend pas encore en charge le protocole HTTPS, vous obtiendrez donc un avertissement de contenu mixte en production. Contacté le support de Star Micronics et ils ont dit qu'ils travaillaient sur le support HTTPS et bientôt une mise à jour du firmware sera disponible. En outre, il semble que l'imprimante Epson Omnilink TM-88V avec TM-I prenne en charge l'impression javascript.

Voici un exemple de code: https://github.com/w3cloud/starwebprint

4
Karthik Sankar

Peut-être pourriez-vous y jeter un œil si votre imprimante est un epson. Il y a un pilote javascript

http://spsrprofessionals.com/ClientSite/readers/ePOS-Print_SDK_141020E/JavaScript/ePOS-Print_SDK_JS_en_revB.pdf

MODIFIER:

Le lien précédent semble rompu

Tous les détails sur la façon d'utiliser l'epos d'Epson se trouvent sur le site Web d'Epson:

https://reference.epson-biz.com/modules/ref_epos_device_js_en/index.php?content_id=139

2
phyzalis

essayez Escpos pour PHP Impression d'impression POS https://github.com/mike42/escpos-php

1
Rajendra

Vous pouvez essayer d'utiliser https://www.printnode.com qui est essentiellement exactement le service que vous recherchez. Vous téléchargez et installez un client de bureau sur l'ordinateur des utilisateurs - https://www.printnode.com/download . Vous pouvez ensuite découvrir et imprimer sur toutes les imprimantes de l'ordinateur de cet utilisateur à l'aide de leur API JSON https://www.printnode.com/docs/api/curl/ . Ils ont beaucoup de bibliothèques ici: https://github.com/PrintNode/

1
user1912424