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.
- PHP 7.1+
- ext-mbstring
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"
}
}
Some TSPL2-like printers, such as Atol BP41/Rongta RP410, do not support all TSPL2 features.
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"
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);
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));
})
;
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));
})
;
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))
;
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.
use PhpAidc\LabelPrinter\Label\Label;
use PhpAidc\LabelPrinter\Label\Element;
$label = Label::create()
->add(Element::textLine(168, 95, 'Hello!', 'Univers', 8))
->copies(3)
;
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);
The PhpAidc LabelPrinter is open-sourced software licensed under the MIT license.
Some ideas taken from mike42/escpos-php.