Інтеграція 1С-Бітрікс із принтерами етикеток Brother
При переході на самоклеючі етикетки багато інтернет-магазинів стикаються з проблемою: Zebra-принтери дорогі, а для малих обсягів надлишкові. Brother пропонує бюджетну альтернативу, але інтеграція з Бітрікс потребує нестандартного підходу — через системний принтер, а не прямий потік даних. Ми маємо досвід понад 10 проєктів із вбудовування Brother в екосистему 1С-Бітрікс і гарантуємо стабільний друк в офісних та легких складських сценаріях.
Brother — альтернатива Zebra для офісних та легких складських завдань. Лінійки QL (термодрук на стрічках DK) та PT (стрічкові принтери) використовуються там, де потрібні невеликі партії етикеток: маркування комплектації, адресні наклейки на відправлення, етикетки полиць. Принципова відмінність від Zebra: Brother працює переважно через друк із системного принтера (GDI/CUPS), а не через RAW TCP/IP з ZPL. Brother на 30–50% швидший у налаштуванні для малого бізнесу — не потрібно вивчати ZPL, достатньо базових знань PHP.
Чому Brother, а не Zebra для старту?
Brother суттєво вигідніший при обсягах до 500 етикеток на день: вартість принтера в 2-3 рази нижча, а налаштування інтеграції займає на 3-5 днів менше. Для інтернет-магазину з 50-200 замовленнями на день це оптимальне рішення. Якщо обсяги зростуть — ми масштабуємо систему до Zebra без втрати даних.
Способи взаємодії з принтером Brother
Варіант 1: Через системний принтер (рекомендується для офісу)
Brother встановлюється як системний принтер у Windows або macOS. Бітрікс генерує PDF або PNG потрібного розміру та відправляє на друк через системну команду:
function printLabelViaCups(string $pdfPath, string $printerName): bool { $cmd = escapeshellcmd("lp -d " . escapeshellarg($printerName) . " " . escapeshellarg($pdfPath)); exec($cmd . ' 2>&1', $output, $returnCode); return $returnCode === 0; } Для Windows — аналогічно через SumatraPDF -print-to або mspaint /pt. Варіант 2: Brother SDK / b-PAC (Windows only)
Brother надає COM-об'єкт b-PAC для роботи з шаблонами .lbx у P-touch Editor. Інтеграція через PHP COM-інтерфейс:
$doc = new COM('bpac.Document'); $doc->Open('C:\\Labels\\price_label.lbx'); $doc->GetObject('barcode')->Text = $barcode; $doc->GetObject('price')->Text = number_format($price, 2, ',', ' ') . ' руб.'; $doc->GetObject('name')->Text = $productName; $doc->StartPrint('', 0); $doc->PrintOut(1, 0); $doc->EndPrint(); $doc->Close(); Цей підхід працює лише якщо PHP виконується на Windows-сервері зі встановленим Brother P-touch Editor. Для production-серверів під Linux не застосовний.
Варіант 3: Brother Web API (QL-820NWB та нові моделі)
Ряд мережевих моделей Brother мають веб-API. Документація специфічна для кожної моделі, але загальний принцип: HTTP POST з base64-закодованим зображенням або PDF. Цей спосіб швидший за системний друк, але потребує додаткової розробки на стороні Бітрікс.
Як організувати чергу друку для Brother?
На відміну від Zebra (де TCP-відправка швидка), друк через системний принтер займає час. Використовуємо ту саму архітектуру черги bl_brother_print_queue:
CREATE TABLE bl_brother_print_queue ( id SERIAL PRIMARY KEY, printer_name VARCHAR(128) NOT NULL, -- ім'я в CUPS template VARCHAR(64) NOT NULL, product_id INT, data_json JSONB, copies SMALLINT DEFAULT 1, status VARCHAR(20) DEFAULT 'pending', created_at TIMESTAMP DEFAULT NOW(), processed_at TIMESTAMP ); Агент Бітрікс бере завдання з черги, рендерить PNG через BrotherLabelRenderer, відправляє на CUPS. Для великих обсягів можна масштабувати — ставити кілька принтерів і крутити по кілька агентів паралельно.
Генерація етикетки на стороні Бітрікс
Для Linux-серверів (варіант 1) генеруємо зображення етикетки через GD або Imagick:
class BrotherLabelRenderer { public function renderPriceLabel(array $product, int $widthMm = 62, int $heightMm = 29): string { $dpi = 300; $wPx = (int)($widthMm / 25.4 * $dpi); $hPx = (int)($heightMm / 25.4 * $dpi); $image = imagecreatetruecolor($wPx, $hPx); $white = imagecolorallocate($image, 255, 255, 255); $black = imagecolorallocate($image, 0, 0, 0); imagefill($image, 0, 0, $white); // Назва товару (використовуємо TTF-шрифт) $fontPath = $_SERVER['DOCUMENT_ROOT'] . '/local/fonts/DejaVuSans.ttf'; imagettftext($image, 14, 0, 20, 60, $black, $fontPath, mb_substr($product['NAME'], 0, 35)); // Ціна велико $price = number_format($product['PRICE'], 2, ',', ' ') . ' руб.'; imagettftext($image, 28, 0, 20, 120, $black, $fontPath, $price); // Штрихкод через бібліотеку (picqer/php-barcode-generator) $barcodeGenerator = new \Picqer\Barcode\BarcodeGeneratorPNG(); $barcodePng = $barcodeGenerator->getBarcode($product['BARCODE'], $barcodeGenerator::TYPE_EAN_13, 2, 60); $barcodeImg = imagecreatefromstring($barcodePng); imagecopy($image, $barcodeImg, 20, 150, 0, 0, imagesx($barcodeImg), imagesy($barcodeImg)); $tmpPath = sys_get_temp_dir() . '/label_' . $product['ID'] . '_' . time() . '.png'; imagepng($image, $tmpPath); imagedestroy($image); return $tmpPath; } } Imagick дає більш чіткі шрифти та підтримує векторні елементи. Ми рекомендуємо використовувати його на серверах з PHP 8.1+.
Порівняння методів інтеграції
| Метод | Швидкість друку | Складність налаштування | Сумісність з Linux | Необхідність SDK |
|---|---|---|---|---|
| Системний принтер (CUPS) | Середня | Низька | Так | Ні |
| COM-об'єкт b-PAC | Висока | Висока | Ні | Так |
| Brother Web API | Висока | Середня | Так | Ні |
Інтеграція з адміністративним інтерфейсом
У картці товару Бітрікс додаємо кнопку «Надрукувати етикетку» — вона додає завдання в чергу з вибором принтера зі списку (bl_brother_printers). При масовому виділенні товарів у списку — групова дія «Надрукувати етикетки».
Кнопка «Надрукувати етикетки на відвантажуване замовлення» додається в адміністративну картку замовлення: генерує адресну наклейку (ПІБ, адреса, номер замовлення) та етикетки комплектації. Усі шаблони легко адаптуються під дизайн вашої компанії — ми надаємо вихідні SVG.
Що входить у роботу
- Рендерер етикеток з підтримкою штрихкодів, цін, назв (GD/Imagick) — 2 дні
- Черга друку + агент з обробкою помилок та повторними спробами — 1 день
- Інтеграція з системним принтером (CUPS/Windows) — 1 день
- Кнопки друку в картці товару та замовлення — 2 дні
- Тестування з реальним принтером Brother — 1 день
- Документація з встановлення та налаштування — включено
- Підтримка 2 тижні після запуску — безкоштовно
Строки
| Етап | Строк |
|---|---|
| Рендерер етикеток (GD/Imagick + TTF) | 2 дні |
| Черга друку + агент | 1 день |
| Інтеграція з CUPS / системним принтером | 1 день |
| Кнопки в картці товару та замовлення | 2 дні |
| Тестування з реальним принтером Brother | 1 день |
| Разом | 7–9 днів |
Оцінимо ваш проєкт безкоштовно — просто опишіть завдання. Виконаємо інтеграцію під ключ за 7–9 робочих днів з гарантією стабільної роботи.







