Back to PhocacartPosPrint class

Method printOrder

public
printOrder
(mixed $o)

Method printOrder - Source code

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();
}