Barcode
Module Barcode (BarcodeGenerator, BarcodeRenderer) render barcode 1D và 2D trực tiếp vào PDF. Loại barcode được định nghĩa bởi enum BarcodeType và Barcode2DType. Mọi method trả về static, nên mỗi lệnh gọi có thể chain.
Ví dụ cơ bản
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
Barcode 1D
php
$pdf->write1DBarcode(
string $code, // Dữ liệu để mã hóa
string $type, // Chuỗi loại barcode
float $x, // Vị trí X
float $y, // Vị trí Y
float $w, // Chiều rộng
float $h, // Chiều cao
float $xres = 0.4, // Chiều rộng thanh mỏng nhất
array $style = [], // Tùy chọn style
);1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Loại 1D hỗ trợ (BarcodeType)
| Chuỗi loại | Giá trị Enum | Mô tả |
|---|---|---|
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 (bưu chính Mỹ) |
PLANET | PLANET | PLANET (bưu chính Mỹ) |
IMB | IMB | Intelligent Mail Barcode |
PHARMA | PHARMACODE | Pharmacode |
Barcode 2D
php
$pdf->write2DBarcode(
string $code, // Dữ liệu để mã hóa
string $type, // Chuỗi loại barcode
float $x, // Vị trí X
float $y, // Vị trí Y
float $w, // Chiều rộng
float $h, // Chiều cao
array $style = [], // Tùy chọn style
);1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Loại 2D hỗ trợ (Barcode2DType)
| Chuỗi loại | Giá trị Enum | Mô tả |
|---|---|---|
QRCODE,L | QR_CODE | QR Code — Sửa lỗi thấp (~7%) |
QRCODE,M | QR_CODE | QR Code — Trung bình (~15%) |
QRCODE,Q | QR_CODE | QR Code — Quartile (~25%) |
QRCODE,H | QR_CODE | QR Code — Cao (~30%) |
DATAMATRIX | DATAMATRIX | DataMatrix |
PDF417 | PDF417 | PDF417 |
Tùy chọn Style
Mảng $style kiểm soát giao diện barcode cho cả method 1D và 2D:
| Key | Kiểu | Mô tả |
|---|---|---|
border | bool | Vẽ border quanh barcode |
padding | float|array | Padding trong border |
fgcolor | array | Màu foreground (thanh) dạng [r, g, b] |
bgcolor | array | Màu background dạng [r, g, b] |
text | bool | Hiện văn bản đọc được dưới barcode 1D |
stretch | bool | Kéo giãn barcode vừa chiều rộng cho trước |
Ví dụ nhãn sản phẩm
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
Dùng mức sửa lỗi QR Code H (cao) khi mã có thể bị che một phần bởi overlay logo.