Cześć! Na początku zaznaczę, że jestem początkującym programistą i nie wszystko jest dla mnie zrozumiałe.
Do tej pory używałem tego kodu do drukowania wyśrodkowanego tekstu ze zdjęciem w jednym wierszu:
$printer -> setJustification(Printer::JUSTIFY_CENTER);
$printer -> inlineImage(EscposImage::load(__DIR__.'/img/cashier.jpg'));
$printer -> text(" "."John Doe"."\n");
Czy można wywołać ten kod za pomocą funkcji, na przykład:
$printer -> printCashier("John Doe");
Mam kilka szablonów i chciałbym zaoszczędzić trochę czasu na pisaniu 3-liniowego kodu.
Czy można to zrobić np. dołączając plik php do każdego pliku, a jeśli tak to jak mogę to zrobić??
Drukowanie odbywa się w ten sposób:
require '../escpos-php/autoload.php';
use Mike42\Escpos\PrintConnectors\NetworkPrintConnector;
use Mike42\Escpos\Printer;
use Mike42\Escpos\EscposImage;
class CustomPrinter extends Mike42\Escpos\Printer {
public function inlineImage(EscposImage $img, $size = Printer::IMG_DEFAULT) {
$highDensityVertical = ! (($size & self::IMG_DOUBLE_HEIGHT) == Printer::IMG_DOUBLE_HEIGHT);
$highDensityHorizontal = ! (($size & self::IMG_DOUBLE_WIDTH) == Printer::IMG_DOUBLE_WIDTH);
$densityCode = ($highDensityHorizontal ? 1 : 0) + ($highDensityVertical ? 32 : 0);
$colFormatData = $img->toColumnFormat($highDensityVertical);
$header = Printer::dataHeader(array($img->getWidth()), true);
foreach ($colFormatData as $line) {
$this->connector -> write(self::ESC . '*' . chr($densityCode) . $header . $line);
break;
}
}
}
$connector = new NetworkPrintConnector("xxx.xxx.x.xxx", 9100);
$printer = new CustomPrinter($connector);
try {
$printer -> setJustification(Printer::JUSTIFY_CENTER);
$printer -> inlineImage(EscposImage::load(__DIR__.'/img/fiscal_logo_print.jpg'));
$printer -> text(" "."John Doe"."\n");
} finally {
$printer -> cut();
$printer -> close();
}
Biblioteka escpos-php jest dostępna na githubie: https://github.com/mike42/escpos-php