public function writeText($text)
{
if ($this->printer == null) {
throw new LogicException("Not attached to a printer.");
}
if ($text == null) {
return;
}
$text = trim($text, "\n");
/* Create Imagick objects */
$image = new \Imagick();
$draw = new \ImagickDraw();
$color = new \ImagickPixel('#000000');
$background = new \ImagickPixel('white');
/* Create annotation */
if ($this->font !== null) {
// Allow fallback on defaults as necessary
$draw->setFont($this->font);
}
/* In Arial, size 21 looks good as a substitute for FONT_B, 24 for FONT_A */
$draw->setFontSize($this->fontSize);
$draw->setFillColor($color);
$draw->setStrokeAntialias(true);
$draw->setTextAntialias(true);
$metrics = $image->queryFontMetrics($draw, $text);
$draw->annotation(0, $metrics['ascender'], $text);
/* Create image & draw annotation on it */
$image->newImage($metrics['textWidth'], $metrics['textHeight'], $background);
$image->setImageFormat('png');
$image->drawImage($draw);
// debugging if you want to view the images yourself
//$image -> writeImage("test.png");
/* Save image */
$escposImage = new ImagickEscposImage();
$escposImage->readImageFromImagick($image);
$size = Printer::IMG_DEFAULT;
$this->printer->bitImage($escposImage, $size);
}