Adding a barcode to a pdf or any kind of other reports is pretty easy since jsreport announced asynchronous helpers.
At first, let's find a proper npm module that can do the work. This can be for example the bwip-js. This module exports asynchronous function bwipjs.toBuffer()
returning promise with the image buffer. This is what we want to call in a helper. The Handlebars and also other templating engines don't support asynchronous helpers, but fortunately, jsreport engines sandbox has this covered out of the box and you can safely return a promise from helpers.
The helpers section can look like this:
const bwipjs = require('bwip-js');
function barcode() {
return bwipjs.toBuffer({
bcid: 'code128',
text: '0123456789',
scale: 3,
height: 10,
includetext: true,
textxalign: 'center',
}).then(p => p.toString('base64'))
}
Then lets call the helper in the template content:
<img src='data:image/png;base64,{{barcode}}' />
The result is the barcode image. This works with mostly every recipe. You can add the barcode this way to the docx, pptx or also xlsx reports.