Skip to content

php-aidc/label-printer

Repository files navigation

PhpAidc LabelPrinter

Latest Version on Packagist Testing Quality Score Code Coverage Total Downloads License MIT

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.