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?
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 /
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.
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.
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);
....
....
....
}
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
Peut-être pourriez-vous y jeter un œil si votre imprimante est un epson. Il y a un pilote javascript
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
essayez Escpos pour PHP Impression d'impression POS https://github.com/mike42/escpos-php
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/