Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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.

AltStyle によって変換されたページ (->オリジナル) /