v2.5.2
Giriş yap

yazıcıya çıktı gönderme

medesan
367 defa görüntülendi

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();
}
Cevap yaz
Cevaplar (1)
h4ckdr0
732 gün önce

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.