yazıcıya çıktı gönderme
Merhaba arkadaşlar, BURADAKİ sınıfıkullanarak veri tabanımdan çektğim verileri satır satır olacak şekilde çıktısını almak istiyorum. fakat ne yaptıysam hem satır satır çıktı almayı hemde türkçe karekter sorununu çözemedim. Bu konuda yardımcı olabilirseniz sevinirim.
Kullandığım kodlar bu şekilde...
require_once("config.php");
require __DIR__ . '/vendor/autoload.php';
$printer_ip = "10.21.13.75";
$printer_port = "9100";
$fis_id = 5;
use Mike42\Escpos\Printer;
use Mike42\Escpos\EscposImage;
use Mike42\Escpos\CapabilityProfile;
use Mike42\Escpos\PrintConnectors\NetworkPrintConnector;
use Mike42\Escpos\PrintConnectors\FilePrintConnector;
$profile = CapabilityProfile::load("simple");
$connector = new NetworkPrintConnector($printer_ip, $printer_port);
$printer = new Printer($connector, $profile);
try {
$result = $db->query( "SELECT * FROM siparisler WHERE fis_id='{$fis_id}' ORDER BY id ASC" );
foreach($result as $data)
{
$printer->text("{$data['adet']} - {$data['urun_adi']} - {$data['aciklama']}\n");
}
} finally {
$printer -> cut();
$printer -> close();
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Türkçe karakterler için, printer'ın kapasite profilini "simple_turkish" olarak ayarlamak veya "cp857" kodlamasını kullanmak için printer'ın constructor'ına ikinci parametre olarak "cp857" vermek deneyebilirsiniz. Örnek:
$profile = CapabilityProfile::load("simple_turkish");
// veya
$printer = new Printer($connector, "cp857");
Eğer yukarıdaki öneriler işe yaramazsa, Türkçe karakterleri doğru şekilde yazdırmak için, karakterlerin Unicode sembollerine dönüştürülmesi gerekebilir. Bu işlem için, aşağıdaki gibi bir fonksiyon kullanılabilir:
function to_unicode($string)
{
$unicode = array();
for ($i = 0; $i < mb_strlen($string, 'UTF-8'); $i++) {
$char = mb_substr($string, $i, 1, 'UTF-8');
$unicode[] = sprintf("%04x", mb_ord($char, 'UTF-8'));
}
return implode("", $unicode);
}
Bu fonksiyon, verilen string'i Unicode sembollerine dönüştürür ve sonucu bir dizi olarak döndürür. Bu diziyi printer'a yazdırmak için aşağıdaki gibi bir kod yazılabilir:
$unicode_string = to_unicode("Türkçe karakterlerin çıktısı");
$printer->text($unicode_string . "\n");
Satır satır çıktı almak için, printer'ın "feed()" metodunu kullanabilirsin. Bu metod, verilen parametre kadar boşluk bırakır ve sonraki çıktıyı aşağı kaydırır. Örnek olarak, aşağıdaki kod 3 boşluk bırakıp sonraki çıktıyı aşağı kaydıracaktır:
$printer->feed(3);
Bu metodu, veri tabanından okunan verilerin her birini yazdıktan sonra çağırarak, satır satır çıktı alınabilir.
Umarım bu öneriler yardımcı olur.