tecnickcom/tc-lib-barcode
PHP library to generate linear and bidimensional barcodes
Maintainers
Fund package maintenance!
Requires
- php: >=8.2
- ext-bcmath: *
- ext-date: *
- ext-gd: *
- ext-pcre: *
- tecnickcom/tc-lib-color: ^2.11
Requires (Dev)
- pdepend/pdepend: ^2.16
- phpunit/phpunit: ^11.5 || ^12.5 || ^13.2
Suggests
None
Provides
None
Conflicts
None
Replaces
None
LGPL-3.0-or-later 3d7b04b0a905b1bcd7ce65e364ab228c3a11a463
- Nicola Asuni <info.woop@tecnick.com>
barcodedatamatrixpdf417planetaztecCODE 39CODABARupcqr-coderoyal mailCBCtc-lib-barcodeANSI MH10.8M-1983USD-33 of 9CODE 93USS-93Standard 2 of 5Interleaved 2 of 5EAN 8EAN 13UPC-AUPC-EMSIPOSTNETRMS4CCKIXKlantIntelligent Mail BarcodeOnecodeUSPS-B-3200CODE 11PHARMACODEPHARMACODE TWO-TRACKSECC200CODE 128 A B CISO IEC 15438 2006ISO IEC 16022ISO IEC 24778 2008
This package is auto-updated.
Last update: 2026-06-17 18:04:59 UTC
README
PHP library for generating linear and 2D barcodes.
👁 Latest Stable Version
👁 Build
👁 Coverage
👁 License
👁 Downloads
If this project is useful to you, please consider supporting development via GitHub Sponsors.
Overview
tc-lib-barcode is a pure-PHP barcode generation library with broad support for industrial, retail, logistics, and document automation use cases.
It focuses on deterministic output and specification-driven encoding, making it suitable for labels, tickets, warehouse flows, and compliance documents. The API is structured so applications can generate barcode data once and render it as vectors or raster images depending on their output target.
| Namespace | \Com\Tecnick\Barcode |
| Author | Nicola Asuni info@tecnick.com |
| License | GNU LGPL v3 - see LICENSE |
| API docs | https://tcpdf.org/docs/srcdoc/tc-lib-barcode |
| Packagist | https://packagist.org/packages/tecnickcom/tc-lib-barcode |
Supported Formats
Linear
| Format | Description |
|---|---|
| C39 | CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9 |
| C39+ | CODE 39 with checksum |
| C39E | CODE 39 EXTENDED |
| C39E+ | CODE 39 EXTENDED + CHECKSUM |
| C93 | CODE 93 - USS-93 |
| S25 | Standard 2 of 5 |
| S25+ | Standard 2 of 5 + CHECKSUM |
| I25 | Interleaved 2 of 5 |
| I25+ | Interleaved 2 of 5 + CHECKSUM |
| C128 | CODE 128 |
| C128A | CODE 128 A |
| C128B | CODE 128 B |
| C128C | CODE 128 C |
| EAN2 | 2-Digits UPC-Based Extension |
| EAN5 | 5-Digits UPC-Based Extension |
| EAN8 | EAN 8 |
| EAN13 | EAN 13 |
| UPCA | UPC-A |
| UPCE | UPC-E |
| MSI | MSI (Variation of Plessey code) |
| MSI+ | MSI + CHECKSUM (modulo 11) |
| CODABAR | CODABAR |
| CODE11 | CODE 11 |
| PHARMA | PHARMACODE |
| PHARMA2T | PHARMACODE TWO-TRACKS |
2D
| Format | Description |
|---|---|
| AZTEC | AZTEC Code (ISO/IEC 24778:2008) |
| DATAMATRIX | DATAMATRIX (ISO/IEC 16022) |
| PDF417 | PDF417 (ISO/IEC 15438:2006) |
| QRCODE | QR-CODE |
| RAW | 2D RAW MODE comma-separated rows |
| RAW2 | 2D RAW MODE rows enclosed in square parentheses |
Postal
| Format | Description |
|---|---|
| POSTNET | POSTNET |
| PLANET | PLANET |
| RMS4CC | RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) |
| KIX | KIX (Klant index - Customer index) |
| IMB | IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 |
| IMBPRE | IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 - pre-processed |
Rendering
- HTML output for web previews
- Image-based rendering for downstream processing
- Configurable dimensions, padding, and color
Output Formats
- PNG Image
- SVG Image
- HTML DIV
- Unicode String
- Binary String
Requirements
- PHP 8.2 or later
- Extensions:
bcmath,date,gd,pcre - Composer
Installation
composer require tecnickcom/tc-lib-barcode
Quick Start
<?php require_once __DIR__ . '/vendor/autoload.php'; $barcode = new \Com\Tecnick\Barcode\Barcode(); $bobj = $barcode->getBarcodeObj( type: 'QRCODE,H', code: 'https://tecnick.com', width: -4, height: -4, color: 'black', padding: [-2, -2, -2, -2], )->setBackgroundColor('white'); echo $bobj->getInlineSvgCode();
For more formats and rendering options, see the example/ directory.
Development
make deps
make help
make qa
To preview the example app in a browser:
make server
Then open http://localhost:8000/ (served from the example/ directory).
To use a different port:
make server PORT=8080
Build artifacts and reports are generated in target/.
Packaging
make rpm make deb
For system packages, bootstrap with:
require_once '/usr/share/php/Com/Tecnick/Barcode/autoload.php';
Contributing
Contributions are welcome. Please read CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md before submitting a pull request.
