Я реализую функциональность для печати счета-фактуры, для этого я использую модуль Escpos, но когда я запускаю это, нет ответа.
если я печатаю php_sapi_name, я получаю «apache2handler» вместо «cli», у меня есть система linux. я не знаю, как получить «Cli» в моем веб-сервере.
Можете ли вы поделиться своей идеей, чтобы решить эту проблему
if(php_sapi_name() == 'cli') {// i got apache2handler
$connector = new FilePrintConnector("php://stdout");
} else {
throw new InvalidArgumentException("Argument passed to Escpos::__construct() must implement interface PrintConnector, null given.");
}
Поскольку вопрос цитирует фрагмент очень знакомого кода, я предполагаю, что вы имеете в виду mike42 / escpos-PHP.
Если это так, вам нужно будет выбрать PrintConnector
которая работает для вашей платформы (Windows, Mac, Linux) и интерфейса (USB, Serial, Samba share, CUPS). Правильный способ инициализации драйвера зависит от конкретной системы.
Таблица поддерживаемых комбинаций со ссылками на примеры фрагментов отображается в ПРОЧТИ МЕНЯ файл.
Например, если у вас есть USB-принтер в Linux, он может выглядеть как /dev/usb/lp0
, Предполагая, что ваши разрешения настроены так, чтобы пользователь веб-сервера имел доступ к этому файлу, отправка базовой квитанции связана с README в Linux / USB:
<?php
require __DIR__ . '/vendor/autoload.php';
use Mike42\Escpos\PrintConnectors\FilePrintConnector;
use Mike42\Escpos\Printer;
$connector = new FilePrintConnector("/dev/usb/lp0");
$printer = new Printer($connector);
$printer -> text("Hello World!\n");
$printer -> cut();
$printer -> close();
В стороне: приведенный вами фрагмент больше не содержится в коде, но был старой функцией, к которой можно прибегнуть php:///stdout
если вы находитесь в командной строке и не указали разъем для печати.
Других решений пока нет …