This library is the Node.js edition of Dynamsoft Barcode Reader. If you are looking to implement barcode reading feature in a web page, please check out the other library Dynamsoft JavaScript Barcode SDK for Web.
Both 1D and 2D barcode symbiology are supported including the popular Code 39
, EAN-13
, QR
, PDF417
, etc.+ Find the full list here.
The library is based on webassembly
which has been an official feature of Node.js since LTS 8
. If you are using Node.js LTS 8 and have no plan to upgrade it, check out how to use the library in Node.js LTS 8. That said, Node.js version >= LTS 12 is recommended because the library will try to use worker_threads
when decoding.
- Check your Node.js version
> node -v
v12.13.1
- Installs the library from npm
> npm install dynamsoft-node-barcode --save
- Create a
js
file and include the library
let Dynamsoft = require("dynamsoft-node-barcode");
The following also works
let Dynamsoft = require("path/to/dist/dbr.js");
Note The library uses
Promise
a lot, so it's recommended to write the related code in aasync
function so that later you can useawait
(async()=>{ // many work will done here })();
- Create an instance of the reader
let reader = await Dynamsoft.BarcodeReader.createInstance();
- Decode a file by its path
let results = await reader.decode('path/to/sample.png');
Or just decode a file by its URL
let results = await reader.decode('https://demo.dynamsoft.com/dbr/img/AllSupportedBarcodeTypes.png');
NOTE
The following image formats are supported by default:png
,jpg
,bmp
,gif
.If you want to decode other files like
If you want to decode raw image data (
RGBA
) from sources like a camera. You can use the APIdeocdeBuffer
. Check out C++ API decodeBuffer for more details.
- Print out the results
for(let result of results){
console.log(result.barcodeText);
}
- Run your code.
> node your-code.js
Last not but least, don't forget to set a productKey
! If you don't have a key yet, click here to get one.
Dynamsoft.BarcodeReader.productKeys = 'PRODUCT-KEYS';
Full code
let Dynamsoft = require('dynamsoft-node-barcode');
// Please visit https://www.dynamsoft.com/CustomerPortal/Portal/TrialLicense.aspx to get a trial license
Dynamsoft.BarcodeReader.productKeys = 'PRODUCT-KEYS';
(async()=>{
let reader = await Dynamsoft.BarcodeReader.createInstance();
for(let result of await reader.decode('https://demo.dynamsoft.com/dbr/img/AllSupportedBarcodeTypes.png')){
console.log(result.barcodeText);
}
reader.destroy();
process.exit();
})();
To set up the library for decoding, use the APIs getRuntimeSettings
& updateRuntimeSettings
.
let settings = await reader.getRuntimeSettings();
settings.expectedBarcodesCount = 999;
await reader.updateRuntimeSettings();
See Barcode reading settings Guide for basic usage.
See C++ API RuntimeSettings for more details.
To find out which settings best suit your usage scenario, visit DBR Main Online Demo.
Any questions, please contact Dynamsoft support.
Node.js LTS 8 doesn't support worker_threads
, so the decoding will happen in the same main thread which means it's a blocking operation. The following code snippets demonstrate the basic usage.
Decode
var dbr = require('path/to/dist/dbr-<version>.node.wasm.js');
dbr.onRuntimeInitialized = ()=>{
dbr.BarcodeReaderWasm.init('{"productKeys":"PRODUCT-KEYS"}');
var reader = new dbr.BarcodeReaderWasm(false,-1);
var fs = require('fs');
var img = fs.readFileSync('./sample.png');
var resultsInfo = JSON.parse(reader.decodeFileInMemory(new Uint8Array(img)));
console.log(resultsInfo);
};
Change settings
var settings = JSON.parse(reader.getRuntimeSettings());
settings.expectedBarcodesCount = 999;
reader.updateRuntimeSettings(JSON.stringify(settings));