# Demo
[https://castrix.github.io/jspdf-barcode](https://castrix.github.io/jspdf-barcode)

[Code](https://github.com/castrix/jspdf-barcode/tree/main/example)

# Why should I use jspdf-barcode?

The barcode that is generated by this library will not break when zoomed in/printed out since it's not generating picture/pixel

# Installation

```
npm install jspdf jspdf-barcode --save
```

## Usage

require jspdf >= 2.0.0

### ES6

```
import jsPDF from "jspdf"; // please use default import
import jspdfBarcode from "jspdf-barcode";

const doc = new jsPDF()
jspdfBarcode(doc, "barcodeValue", {
    fontSize: 23,
    textColor: "#000000",
    x: 5.4,
    y: 25.5,
    textOptions: { align: "center" } // optional text options
  })
```

### CJS

```
const { jsPDF } = require("jspdf")
const jspdfBarcode = require("jspdf-barcode").default // use .default

const doc = new jsPDF()
jspdfBarcode(doc, "barcodeValue", {
    fontSize: 23,
    textColor: "#000000",
    x: 5.4,
    y: 25.5,
    textOptions: { align: "center" } // optional text options
  })
```

## Support
By default, it will use `AUTO` variant (will choose between `Code 128B` or `Code 128C`) if `options.variant` is not provided.

- Code 128A: can accept uppercase alphanumeric (ABCD123)
  - Uppercase letters (A-Z)
  - Numbers (0-9)
  - Control characters (ASCII 0-31, like NUL, TAB, CR)
  - Some punctuation (e.g., space, $, %, +, -, ., /, :)

- Code 128B: most versatile, can accept mixed case alphanumeric (abcABC123)
  - Uppercase letters (A-Z)
  - Lowercase letters (a-z)
  - Numbers (0-9)
  - More punctuation (e.g., space, !, ", #, $, %, &, etc.)

- Code 128C: Optimized (shortest barcode) for numeric-only data (e.g., serial numbers)

## Arguments

| arguments    | type   | accepted value                                                                                             |
|--------------|--------|------------------------------------------------------------------------------------------------------------|
| doc | string | jspdf instance |
| barcodeValue | string | alphanumeric                                                                                               |   |   |
| options      | object | `fontSize` number, <br/> `textColor` string, <br/> `x`: number // x coordinate of pdf, <br/> `y`: number // y coordinate of pdf, <br/> `textOptions?`: [jspdf.textOptions](https://artskydj.github.io/jsPDF/docs/jsPDF.html#text) <br/> `variant?`: "AUTO" \| "A" \| "B" \| "C" |
