Skip to content

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 BarcodeTypeBarcode2DType. 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);

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
);

Loại 1D hỗ trợ (BarcodeType)

Chuỗi loạiGiá trị EnumMô tả
C39CODE_39Code 39
C93CODE_93Code 93
C128CODE_128Code 128 (auto mode)
C128ACODE_128ACode 128 Subset A
C128BCODE_128BCode 128 Subset B
C128CCODE_128CCode 128 Subset C
EAN8EAN_8EAN-8
EAN13EAN_13EAN-13
UPCAUPC_AUPC-A
UPCEUPC_EUPC-E
I25I25Interleaved 2 of 5
S25S25Standard 2 of 5
CODABARCODABARCodabar
CODE11CODE_11Code 11
MSIMSIMSI Plessey
POSTNETPOSTNETPOSTNET (bưu chính Mỹ)
PLANETPLANETPLANET (bưu chính Mỹ)
IMBIMBIntelligent Mail Barcode
PHARMAPHARMACODEPharmacode

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
);

Loại 2D hỗ trợ (Barcode2DType)

Chuỗi loạiGiá trị EnumMô tả
QRCODE,LQR_CODEQR Code — Sửa lỗi thấp (~7%)
QRCODE,MQR_CODEQR Code — Trung bình (~15%)
QRCODE,QQR_CODEQR Code — Quartile (~25%)
QRCODE,HQR_CODEQR Code — Cao (~30%)
DATAMATRIXDATAMATRIXDataMatrix
PDF417PDF417PDF417

Tùy chọn Style

Mảng $style kiểm soát giao diện barcode cho cả method 1D và 2D:

KeyKiểuMô tả
borderboolVẽ border quanh barcode
paddingfloat|arrayPadding trong border
fgcolorarrayMàu foreground (thanh) dạng [r, g, b]
bgcolorarrayMàu background dạng [r, g, b]
textboolHiện văn bản đọc được dưới barcode 1D
stretchboolKé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],
    ]);

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.

Phân phối theo giấy phép LGPL-3.0-or-later.