barcode-data-reader
TypeScript icon, indicating that this package has built-in type declarations

0.4.0 • Public • Published

barcode-data-reader

A JavaScript library to read the binary data of barcodes.

Currently, it is mainly designed to work with QR codes.

A QR code has several modes for encoding the data.

Input mode Mode indicator Max. characters Possible characters, default encoding
Numeric only 1 7,089 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Alphanumeric 2 4,296 0–9, A–Z (upper-case only), space, $, %, *, +, -, ., /, :
Binary/byte 4 2,953 ISO/IEC 8859-1
Kanji/kana 8 1,817 Shift JIS X 0208
Structured Append 3 unlimited Not specific

PS: structured append is a mode that the data is divided into several barcodes.

This library can read the data based on different modes. If the text encoding cannot be decided by the ECI mode, it uses chardet to guess the encoding.

Online demo

Installation

Via NPM:

npm install barcode-data-reader

Via CDN:

<script type="module">
  import { BarcodeDataReader } from 'https://cdn.jsdelivr.net/npm/barcode-data-reader/dist/barcode-data-reader.js';
</script>

Usage

Sample code reading barcode results from Dynamsoft Barcode Reader.

let result;// Dynamsoft's Captured Result Item
let barcodes = [];
for (let index = 0; index < result.items.length; index++) {
  const item = result.items[index];
  if (item.type === Dynamsoft.Core.EnumCapturedResultItemType.CRIT_BARCODE) {
    let data = new Uint8Array(item.bytes.length);
    data.set(item.bytes);
    let barcode = {
      bytes:data,
      details:item.details
    }
    barcodes.push(barcode);
  }
}

let reader = new BarcodeDataReader(barcodes);
let dataType = 0; //0:text, 1:image, 2:svg, 3: unknown
let encoding = undefined; //pass encoding to specify the text encoding;
let readingResults = await reader.read(barcodes,dataType,encoding);

Interfaces

export interface ReadingResult {
  text?:string;
  img?:HTMLImageElement;
  blob?:Blob;
}

export enum DataType {
  text = 0,
  image = 1,
  SVG = 2,
  unknown = 3
}

export interface Barcode {
  bytes:Uint8Array;
  barcodeType:"QR"|undefined;
  details:BarcodeDetail;
}

export interface BarcodeDetail {
  mode?:number;
  model?:number;
  errorCorrectionLevel?:number;
  columns?:number;
  rows?:number;
  page?:number;
  totalPage?:number;
  parityData?:number;
  version?:number;
}

Package Sidebar

Install

npm i barcode-data-reader

Weekly Downloads

2

Version

0.4.0

License

MIT

Unpacked Size

124 kB

Total Files

8

Last publish

Collaborators

  • xulihang