public function printOrder($o)
{
$oA = explode($this->lineEnd, $o);
if (!empty($oA)) {
try {
if ($this->connector instanceof Mike42\Escpos\PrintConnectors\PrintConnector) {
$printer = new Printer($this->connector);
$doc = new DOMDocument();
foreach ($oA as $k => $v) {
if (strpos($v, '<div') === 0) {
$doc->loadHTML($this->cleanOutput($v));
$xpath = new DOMXPath($doc);
$class = $xpath->evaluate("string(//div/@class)");
switch ($class) {
case 'pDoubleSize':
$printer->selectPrintMode(Printer::MODE_DOUBLE_HEIGHT | Printer::MODE_DOUBLE_WIDTH);
$printer->setEmphasis(true);
$printer->text(strip_tags($v) . $this->lineEnd);
$printer->setEmphasis(false);
$printer->selectPrintMode();
break;
case 'pDoubleSizeCenter':
$printer->selectPrintMode(Printer::MODE_DOUBLE_HEIGHT | Printer::MODE_DOUBLE_WIDTH);
$printer->setJustification(Printer::JUSTIFY_CENTER);
$printer->text(strip_tags($v) . $this->lineEnd);
$printer->setJustification();
$printer->selectPrintMode();
break;
case 'pCenter':
$printer->setJustification(Printer::JUSTIFY_CENTER);
$printer->text(strip_tags($v) . $this->lineEnd);
$printer->setJustification();
break;
case 'pLeft':
$printer->setJustification(Printer::JUSTIFY_LEFT);
$printer->text(strip_tags($v) . $this->lineEnd);
$printer->setJustification();
break;
case 'pRight':
$printer->setJustification(Printer::JUSTIFY_RIGHT);
$printer->text(strip_tags($v) . $this->lineEnd);
$printer->setJustification();
break;
case 'pUnderline':
$printer->selectPrintMode(Printer::UNDERLINE_SINGLE);
$printer->text(strip_tags($v) . $this->lineEnd);
$printer->selectPrintMode();
break;
case 'pFeed':
$protectionLimit = 20;
$number = $xpath->evaluate("string(//div/@data-value)");
if ((int) $number > 0 && (int) $number < $protectionLimit) {
$printer->feed((int) $number);
}
break;
default:
$printer->text(strip_tags($v) . $this->lineEnd);
break;
}
} else {
if (strpos($v, '<img') === 0) {
$doc->loadHTML($this->cleanOutput($v));
$xpath = new DOMXPath($doc);
$src = $xpath->evaluate("string(//img/@data-src)");
$srcAbs = JPATH_ROOT . '/' . $src;
if (File::exists($srcAbs)) {
$printer->setJustification(Printer::JUSTIFY_CENTER);
$image = EscposImage::load($srcAbs, false);
$printer->bitImage($image);
$printer->setJustification();
}
} else {
$printer->text(strip_tags($v) . $this->lineEnd);
}
}
}
$printer->feed(2);
$printer->cut();
$printer->close();
} else {
PhocacartLog::add(2, 'Server Printer Not Set - see POS Print Settings');
ob_get_clean();
}
} catch (Exception $e) {
PhocacartLog::add(2, 'Server Printer Error: ' . $e->getMessage());
ob_get_clean();
}
}
//- $connector = new Mike42\Escpos\PrintConnectors\WindowsPrintConnector("COM1");
//- $printer = new Printer($connector);
//$printer -> setEmphasis(false);
//- $printer -> text($o);
//$printer -> selectPrintMode(Printer::MODE_FONT_B);
/*$printer -> setJustification(Printer::JUSTIFY_LEFT);
$printer -> setEmphasis(true);
$printer -> text($o);
$printer -> setEmphasis(false);
$printer -> text($o);
$printer -> setUnderline(true);
$printer -> text($o);
$printer -> setUnderline(false);
$printer -> selectPrintMode(Printer::MODE_DOUBLE_HEIGHT | Printer::MODE_DOUBLE_WIDTH);
$printer -> text($o);
$printer -> selectPrintMode();// Reset
/*$printer -> selectPrintMode(Printer::MODE_EMPHASIZED);
$printer -> text($o);
$printer -> selectPrintMode(Printer::MODE_DOUBLE_HEIGHT);
$printer -> text($o);
$printer -> selectPrintMode(Printer::MODE_DOUBLE_WIDTH);
$printer -> text($o);
$printer -> selectPrintMode(Printer::MODE_UNDERLINE);
$printer -> text($o);*/
//- $printer -> setJustification();// Reset
//- $printer -> selectPrintMode();// Reset
//- $printer -> feed(5);
//- $printer -> cut();
//$printer -> pulse();
//- $printer -> close();
}