⚠️ This plugin is not being actively maintained. Any help is welcome.

cordova-plugin-datecs-printer (Android only)

The first thing that you must know is that the plugin is available through this variable window.DatecsPrinter.

As well as any other plugin it will only be available after deviceready event is fired

So, there's a lot of functions that you can call to execute each operation and perform the printer actions, these are the most important ones (you can see all on printer.js file):

(every function accept at least two parameters, and they're the last ones: onSuccess function and onError function)

Reported Working Printer Models

These models were reported as working as expected:

(if you notice another model please let us know by opening a issue and reporting)

Example

window.DatecsPrinter.listBluetoothDevices(
  function (devices) {
    window.DatecsPrinter.connect(devices[0].address, 
      function() {
        printSomeTestText();
      },
      function() {
        alert(JSON.stringify(error));
      }
    );
  },
  function (error) {
    alert(JSON.stringify(error));
  }
);

function printSomeTestText() {
  window.DatecsPrinter.printText("Print Test!", 'ISO-8859-1', 
    function() {
      printMyImage();
    }
  );
}

function printMyImage() {
  var image = new Image();
  image.onload = function() {
      var canvas = document.createElement('canvas');
      canvas.height = 100;
      canvas.width = 100;
      var context = canvas.getContext('2d');
      context.drawImage(image, 0, 0);
      var imageData = canvas.toDataURL('image/jpeg').replace(/^data:image\/(png|jpg|jpeg);base64,/, ""); //remove mimetype
      window.DatecsPrinter.printImage(
          imageData, //base64
          canvas.width, 
          canvas.height, 
          1, 
          function() {
            printMyBarcode();
          },
          function(error) {
              alert(JSON.stringify(error));
          }
      )
  };
  image.src = 'img/some_image.jpg';
}

function printMyBarcode() {
  window.DatecsPrinter.printBarcode(
    75, //here goes the barcode type code
    '13132498746313210584982011487', //your barcode data
    function() {
      alert('success!');
    },
    function() {
      alert(JSON.stringify(error));
    }
  );
}

Print QRCode example

function printQRCode() {
  window.DatecsPrinter.printQRCode(
    4, 
    4, 
    'http://giorgiofellipe.com.br',
    function() {
      alert('success!');
    },
    function() {
      alert(JSON.stringify(error));
    }
  );
}

Some printer models may not be able to print QRCode using the above way. Here goes another way, using the node-qrcode package and printImage method.

function printQRCode() {

    //Create QR Code with node-qrcode package
    //https://github.com/soldair/node-qrcode

    var QRCode = require('qrcode');

    //Generate the QR image
    QRCode.toDataURL('https://your-qr-data', { errorCorrectionLevel: 'L' }, function (err, url) {

      var image = new Image();

      image.src = url;

      var canvas = document.createElement('canvas');
        canvas.height = 164;
        canvas.width = 164;
        var context = canvas.getContext('2d');

        context.drawImage(image, 0, 0);

        var imageData = canvas.toDataURL('image/jpeg').replace(/^data:image\/(png|jpg|jpeg);base64,/, ""); //remove 

      window.DatecsPrinter.printImage(
            imageData, //base64
            canvas.height, 
            canvas.width, 
            //align
            1,

            function() {
            },

            function(error) {
                alert(JSON.stringify(error));
            }
        );

  });

}

Tags definition

Alignment Codes

Barcode Type Codes

Barcode HRI Position Codes

ConnectionStatus Event

To listen about the connection status this is the way you should go: You should use this plugin to receive the broadcasts cordova plugin add cordova-plugin-broadcaster

window.broadcaster.addEventListener( "DatecsPrinter.connectionStatus", function(e) {
  if (e.isConnected) {
    //do something
  }
  if (!e.hasPaper) {
    //do something
  }
  if (e.lowBattery) {
    //do something
  }
});

Angular / Ionic

If your intention is to use it with Angular or Ionic, you may take a look at this simple example: https://github.com/giorgiofellipe/cordova-plugin-datecsprinter-example. There's a ready to use angular service implementation.