An open API service indexing awesome lists of open source software.

https://github.com/php-aidc/label-printer

A PHP package for label printers (Honeywell, Intermec, TSC)
https://github.com/php-aidc/label-printer

aidc fingerprint honeywell intermec php7 printer tsc tspl tspl2

Last synced: 6 months ago
JSON representation

A PHP package for label printers (Honeywell, Intermec, TSC)

Awesome Lists containing this project

README

          

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](#requirements)
- [Installation](#installation)
- [Basic usage](#basic-usage)

## Requirements
- PHP 7.1+
- ext-mbstring

## Installation

LabelPrinter is installed via [Composer](https://getcomposer.org/):
```bash
composer require php-aidc/label-printer
```

You can of course also manually edit your composer.json file
```json
{
"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

```php
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
```php
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
```php
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
```php
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
```php
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
```php
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
```php
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
```php
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](http://opensource.org/licenses/MIT).

> Some ideas taken from [mike42/escpos-php](https://github.com/mike42/escpos-php).