UNPKG

@syncfusion/ej2-barcode-generator

Version:

Barcode generator component is a pure JavaScript library which will convert a string to Barcode and show it to the user. This supports major 1D and 2D barcodes including coda bar, code 128, QR Code.

148 lines (142 loc) 4.43 kB
import { Code39 } from './code39'; /** * code39 used to calculate the barcode of type 39 */ export class Code39Extension extends Code39 { // eslint-disable-next-line private code39ExtensionValues(): object { // eslint-disable-next-line let codes: object = { '0': '%U', '1': '$A', '2': '$B', '3': '$C', '4': '$D', '5': '$E', '6': '$F', '7': '$G', '8': '$H', '9': '$I', '10': '$J', '11': '$K', '12': '$L', '13': '$M', '14': '$N', '15': '$O', '16': '$P', '17': '$Q', '18': '$R', '19': '$S', '20': '$T', '21': '$U', '22': '$V', '23': '$W', '24': '$X', '25': '$Y', '26': '$Z', '27': '%A', '28': '%B', '29': '%C', '30': '%D', '31': '%E', '32': ' ', '33': '/A', '34': '/B', '35': '/C', '36': '/D', '37': '/E', '38': '/F', '39': '/G', '40': '/H', '41': '/I', '42': '/J', '43': '/K', '44': '/L', '45': '-', '46': '.', '47': '/O', '48': '0', '49': '1', '50': '2', '51': '3', '52': '4', '53': '5', '54': '6', '55': '7', '56': '8', '57': '9', '58': '/Z', '59': '%F', '60': '%G', '61': '%H', '62': '%I', '63': '%J', '64': '%V', '65': 'A', '66': 'B', '67': 'C', '68': 'D', '69': 'E', '70': 'F', '71': 'G', '72': 'H', '73': 'I', '74': 'J', '75': 'K', '76': 'L', '77': 'M', '78': 'N', '79': 'O', '80': 'P', '81': 'Q', '82': 'R', '83': 'S', '84': 'T', '85': 'U', '86': 'V', '87': 'W', '88': 'X', '89': 'Y', '90': 'Z', '91': '%K', '92': '%L', '93': '%M', '94': '%N', '95': '%O', '96': '%W', '97': '+A', '98': '+B', '99': '+C', '100': '+D', '101': '+E', '102': '+F', '103': '+G', '104': '+H', '105': '+I', '106': '+J', '107': '+K', '108': '+L', '109': '+M', '110': '+N', '111': '+O', '112': '+P', '113': '+Q', '114': '+R', '115': '+S', '116': '+T', '117': '+U', '118': '+V', '119': '+W', '120': '+X', '121': '+Y', '122': '+Z', '123': '%P', '124': '%Q', '125': ' %R', '126': '%S', '127': '%T' }; return codes; } /** * Validate the given input. * * @returns {string} Validate the given input. * @param {string} char - Provide the canvas element . * @private */ public validateInput(char: string): string { const asciiCheck: boolean = this.checkText(char); if (asciiCheck) { return undefined; } else { return 'Supports 128 characters of ASCII.'; } } private checkText(char: string): boolean { for (let i: number = 0; i < char.length; i++) { if (char.charCodeAt(i) > 127) { return false; } } return true; } private code39Extension(givenCharacter: string): string { let encodedString: string = ''; // eslint-disable-next-line const code: object = this.code39ExtensionValues(); let asciivalue: number; for (let i: number = 0; i < givenCharacter.length; i++) { asciivalue = givenCharacter[parseInt(i.toString(), 10)].charCodeAt(0); encodedString += code[parseInt(asciivalue.toString(), 10)]; } return encodedString; } /** * Draw the barcode SVG.\ * * @returns {void} Draw the barcode SVG . * @param {HTMLElement} canvas - Provide the canvas element . * @private */ public drawCode39(canvas: HTMLElement): void { const givenCharacter: string = this.value; const encodedCharacter: string = this.code39Extension(givenCharacter); this.drawCode39Extension(canvas, encodedCharacter); } }