resto-dhepot/packages/escpos-php/example/specific/39-currency-symbols.php

81 lines
2.5 KiB
PHP

<?php
require __DIR__ . '/../../vendor/autoload.php';
use Zelda\EscposPhp\CapabilityProfile;
use Zelda\EscposPhp\Printer;
use Zelda\EscposPhp\PrintConnectors\FilePrintConnector;
use Zelda\EscposPhp\PrintBuffers\ImagePrintBuffer;
$profile = CapabilityProfile::load("default");
// This is a quick demo of currency symbol issues in #39.
/* Option 1: Native ESC/POS characters, depends on printer and is buggy. */
$connector = new FilePrintConnector("php://stdout");
$printer = new Printer($connector, $profile);
$printer->text("€ 9,95\n");
$printer->text("£ 9.95\n");
$printer->text("$ 9.95\n");
$printer->text("¥ 9.95\n");
$printer->cut();
$printer->close();
/* Option 2: Image-based output (formatting not available using this output). */
$buffer = new ImagePrintBuffer();
$connector = new FilePrintConnector("php://stdout");
$printer = new Printer($connector, $profile);
$printer->setPrintBuffer($buffer);
$printer->text("€ 9,95\n");
$printer->text("£ 9.95\n");
$printer->text("$ 9.95\n");
$printer->text("¥ 9.95\n");
$printer->cut();
$printer->close();
/*
Option 3: If the printer is configured to print in a specific code
page, you can set up a CapabilityProfile which either references its
iconv encoding name, or includes all of the available characters.
Here, we make use of CP858 for its inclusion of currency symbols which
are not available in CP437. CP858 has good printer support, but is not
included in all iconv builds.
*/
class CustomCapabilityProfile extends CapabilityProfile
{
function getCustomCodePages()
{
/*
* Example to print in a specific, user-defined character set
* on a printer which has been configured to use i
*/
return array(
'CP858' => "ÇüéâäàåçêëèïîìÄÅ" .
"ÉæÆôöòûùÿÖÜø£Ø×ƒ" .
"áíóúñѪº¿®¬½¼¡«»" .
"░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐" .
"└┴┬├─┼ãÃ╚╔╩╦╠═╬¤" .
"ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀" .
"ÓßÔÒõÕµþÞÚÛÙýݯ´" .
" ±‗¾¶§÷¸°¨·¹³²■ "
);
}
function getSupportedCodePages()
{
return array(
0 => 'custom:CP858'
);
}
}
$connector = new FilePrintConnector("php://stdout");
$profile = CustomCapabilityProfile::getInstance();
$printer = new Printer($connector, $profile);
$printer->text("€ 9,95\n");
$printer->text("£ 9.95\n");
$printer->text("$ 9.95\n");
$printer->text("¥ 9.95\n");
$printer->cut();
$printer->close();