Skip to content

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

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

Supported 1D Types (BarcodeType)

Type StringEnum ValueDescription
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 (US postal)
PLANETPLANETPLANET (US postal)
IMBIMBIntelligent Mail Barcode
PHARMAPHARMACODEPharmacode

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

Supported 2D Types (Barcode2DType)

Type StringEnum ValueDescription
QRCODE,LQR_CODEQR Code — Low error correction (~7%)
QRCODE,MQR_CODEQR Code — Medium (~15%)
QRCODE,QQR_CODEQR Code — Quartile (~25%)
QRCODE,HQR_CODEQR Code — High (~30%)
DATAMATRIXDATAMATRIXDataMatrix
PDF417PDF417PDF417

Style Options

The $style array controls barcode appearance for both 1D and 2D methods:

KeyTypeDescription
borderboolDraw a border around the barcode
paddingfloat|arrayPadding inside the border
fgcolorarrayForeground (bar) color as [r, g, b]
bgcolorarrayBackground color as [r, g, b]
textboolShow human-readable text below 1D barcodes
stretchboolStretch 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],
    ]);

Use QR Code error correction level H (high) when the code may be partially obscured by a logo overlay.

Released under the LGPL-3.0-or-later License.