php-aidc / label-printer
Easily create and print labels on various label printers
Installs: 12 927
Dependents: 0
Suggesters: 0
Security: 0
Stars: 57
Watchers: 5
Forks: 12
Open Issues: 3
Requires
- php: >=7.1
- ext-mbstring: *
- myclabs/php-enum: ^1.7
Requires (Dev)
- phpunit/phpunit: ~7.5
Suggests
- ext-imagick: Required to print unsupported image formats, PDF and text with custom fonts.
This package is auto-updated.
Last update: 2024-11-17 20:40:22 UTC
README
PhpAidc LabelPrinter is a library that help you create and print labels on printers that support Direct Protocol, Fingerprint, TSPL/TSPL2 languages (Honeywell, Intermec, TSC) via TCP/IP.
Requirements
- PHP 7.1+
- ext-mbstring
Installation
LabelPrinter is installed via Composer:
composer require php-aidc/label-printer
You can of course also manually edit your composer.json file
{ "require": { "php-aidc/label-printer": "v0.4" } }
Basic usage
Some TSPL2-like printers, such as Atol BP41/Rongta RP410, do not support all TSPL2 features.
Read data from printer
use PhpAidc\LabelPrinter\Printer; use PhpAidc\LabelPrinter\Connector\NetworkConnector; $printer = new Printer(new NetworkConnector('192.168.x.x')); \var_dump($printer->ask('? VERSION$(0)')); // "Direct Protocol 10.15.017559 \r\n"
Create and print label
use PhpAidc\LabelPrinter\Enum\Unit; use PhpAidc\LabelPrinter\Enum\Anchor; use PhpAidc\LabelPrinter\Enum\Charset; use PhpAidc\LabelPrinter\Printer; use PhpAidc\LabelPrinter\Label\Label; use PhpAidc\LabelPrinter\Label\Element; use PhpAidc\LabelPrinter\CompilerFactory; use PhpAidc\LabelPrinter\Connector\NetworkConnector; $label = Label::create(Unit::MM(), 43, 25) ->charset(Charset::UTF8()) ->add(Element::textBlock(168, 95, 'Hello!', 'Univers', 8)->box(338, 100, 0)->anchor(Anchor::CENTER())) ->add(Element::barcode(10, 10, '123456', 'CODE93')->height(60)) ; (new Printer(new NetworkConnector('192.168.x.x'), CompilerFactory::tspl()))->print($label);
Add elements only for a specific language
use PhpAidc\LabelPrinter\Label\Label; use PhpAidc\LabelPrinter\Label\Element; use PhpAidc\LabelPrinter\Language\Tspl; use PhpAidc\LabelPrinter\Language\Fingerprint; $label = Label::create() ->for(Fingerprint::class, static function (Label $label) { $label->add(Element::textLine(168, 95, 'Hello!', 'Univers', 8)); }) ->for(Tspl::class, static function (Label $label) { $label->add(Element::textLine(10, 10, 'Hello!', 'ROMAN.TTF', 8)); }) ;
Add elements if some value is truthy
use PhpAidc\LabelPrinter\Label\Label; use PhpAidc\LabelPrinter\Label\Element; $text = ''; $label = Label::create() ->when($text, static function (Label $label, $text) { // will not be added until the $text is empty $label->add(Element::textLine(168, 95, $text, 'Univers', 8)); }) ;
Print images
use PhpAidc\LabelPrinter\Label\Label; use PhpAidc\LabelPrinter\Label\Element; use PhpAidc\LabelPrinter\Language\Tspl; use PhpAidc\LabelPrinter\Language\Fingerprint; $image = new \Imagick('gift.svg'); $label = Label::create() ->for(Fingerprint::class, static function (Label $label) { // from printer's memory — png, bmp, pcx $label->add(Element::intImage(10, 10, 'GLOBE.1')); // from filesystem $label->add(Element::extImage(10, 10, \realpath('alien.png'))); }) ->for(Tspl::class, static function (Label $label) { // from printer's memory — bmp, pcx $label->add(Element::intImage(10, 10, 'ALIEN.BMP')); }) // from filesystem via Imagick — any supported types ->add(Element::bitmap(50, 10, $image)) ;
Print text with emulation
use PhpAidc\LabelPrinter\Label\Label; use PhpAidc\LabelPrinter\Label\Element; $label = Label::create() ->add(Element::textLine(10, 10, 'Hello!', '/path/to/font/roboto.ttf', 20)->emulate()) ->add(Element::textBlock(100, 10, 'Hello again!', '/path/to/font/roboto.ttf', 20)->box(300, 20)->emulate()) ;
Text will be drawn with Imagick and printed as bitmap.
Specify the number of copies
use PhpAidc\LabelPrinter\Label\Label; use PhpAidc\LabelPrinter\Label\Element; $label = Label::create() ->add(Element::textLine(168, 95, 'Hello!', 'Univers', 8)) ->copies(3) ;
Batch printing
use PhpAidc\LabelPrinter\Printer; use PhpAidc\LabelPrinter\Label\Batch; use PhpAidc\LabelPrinter\Label\Label; use PhpAidc\LabelPrinter\Label\Element; use PhpAidc\LabelPrinter\CompilerFactory; use PhpAidc\LabelPrinter\Connector\NetworkConnector; $batch = (new Batch()) ->add(Label::create()->add(Element::textLine(168, 95, 'Hello!', 'Univers', 8))) ->add(Label::create()->add(Element::textLine(168, 95, 'Bye!', 'Univers', 8))) ; (new Printer(new NetworkConnector('192.168.x.x'), CompilerFactory::fingerprint()))->print($label);
License
The PhpAidc LabelPrinter is open-sourced software licensed under the MIT license.
Some ideas taken from mike42/escpos-php.