Barcodes
The Barcode module (BarcodeGenerator, BarcodeRenderer) renders 1D and 2D barcodes directly into the PDF. Barcode types are defined by the BarcodeType and Barcode2DType enums. All methods return static, so every call can be chained.
Basic Example
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Product Barcodes', newLine: true)
// 1D: EAN-13
->write1DBarcode('4006381333931', 'EAN13', 10, 30, 80, 30, 0.4, [
'border' => false,
'text' => true,
'fgcolor' => [0, 0, 0],
])
// 1D: Code 128
->write1DBarcode('TCPDF-NEXT', 'C128', 10, 70, 80, 20, 0.4)
// 2D: QR Code
->write2DBarcode('https://tcpdf-next.dev', 'QRCODE,H', 10, 100, 50, 50, [
'fgcolor' => [0, 0, 0],
'bgcolor' => [255, 255, 255],
])
// 2D: DataMatrix
->write2DBarcode('Hello DataMatrix', 'DATAMATRIX', 70, 100, 40, 40);1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1D Barcodes
php
$pdf->write1DBarcode(
string $code, // Data to encode
string $type, // Barcode type string
float $x, // X position
float $y, // Y position
float $w, // Width
float $h, // Height
float $xres = 0.4, // Width of the thinnest bar in user units
array $style = [], // Style options
);1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Supported 1D Types (BarcodeType)
| Type String | Enum Value | Description |
|---|---|---|
C39 | CODE_39 | Code 39 |
C93 | CODE_93 | Code 93 |
C128 | CODE_128 | Code 128 (auto mode) |
C128A | CODE_128A | Code 128 Subset A |
C128B | CODE_128B | Code 128 Subset B |
C128C | CODE_128C | Code 128 Subset C |
EAN8 | EAN_8 | EAN-8 |
EAN13 | EAN_13 | EAN-13 |
UPCA | UPC_A | UPC-A |
UPCE | UPC_E | UPC-E |
I25 | I25 | Interleaved 2 of 5 |
S25 | S25 | Standard 2 of 5 |
CODABAR | CODABAR | Codabar |
CODE11 | CODE_11 | Code 11 |
MSI | MSI | MSI Plessey |
POSTNET | POSTNET | POSTNET (US postal) |
PLANET | PLANET | PLANET (US postal) |
IMB | IMB | Intelligent Mail Barcode |
PHARMA | PHARMACODE | Pharmacode |
2D Barcodes
php
$pdf->write2DBarcode(
string $code, // Data to encode
string $type, // Barcode type string
float $x, // X position
float $y, // Y position
float $w, // Width
float $h, // Height
array $style = [], // Style options
);1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Supported 2D Types (Barcode2DType)
| Type String | Enum Value | Description |
|---|---|---|
QRCODE,L | QR_CODE | QR Code — Low error correction (~7%) |
QRCODE,M | QR_CODE | QR Code — Medium (~15%) |
QRCODE,Q | QR_CODE | QR Code — Quartile (~25%) |
QRCODE,H | QR_CODE | QR Code — High (~30%) |
DATAMATRIX | DATAMATRIX | DataMatrix |
PDF417 | PDF417 | PDF417 |
Style Options
The $style array controls barcode appearance for both 1D and 2D methods:
| Key | Type | Description |
|---|---|---|
border | bool | Draw a border around the barcode |
padding | float|array | Padding inside the border |
fgcolor | array | Foreground (bar) color as [r, g, b] |
bgcolor | array | Background color as [r, g, b] |
text | bool | Show human-readable text below 1D barcodes |
stretch | bool | Stretch barcode to fill the given width |
Product Label Example
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', 'B', 14)
->cell(0, 10, 'Widget Pro X1', newLine: true)
->setFont('Helvetica', '', 10)
->cell(0, 8, 'SKU: WPX1-2026', newLine: true)
->write1DBarcode('4006381333931', 'EAN13', 10, 35, 60, 25, 0.4, [
'text' => true,
'fgcolor' => [0, 0, 0],
])
->write2DBarcode('https://example.com/product/123', 'QRCODE,H', 80, 30, 30, 30, [
'fgcolor' => [33, 37, 41],
'bgcolor' => [255, 255, 255],
]);1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Use QR Code error correction level H (high) when the code may be partially obscured by a logo overlay.