печать — есть ли способ распечатать квитанцию, используя PHP?

Я пытаюсь таким образом, но это не дает правильного выравнивания. Я пытаюсь выполнить печать с помощью сетевого принтера «Драйвер HP LaserJet Mono PCLmS Class» в моей локальной сети. Печать работает правильно, но выравнивание не идеально.

$text1 = $this->string_align("Example item #1", "4.00");
$text2 = $this->string_align("Another thing tea", "3.50");
$text3 = $this->string_align("Something else", "1.00");
$text4 = $this->string_align("A final item", "4.45");
$text5 = $this->string_align("Subtotal", "12.95");
$text6 = $this->string_align("A local tax", "1.30");
$text7 = $this->string_align("Grand Total", "14.25");

$handle = printer_open("HP LaserJet Mono PCLmS Class Driver");
printer_start_doc($handle, "Recept Document");
printer_start_page($handle);
printer_draw_bmp($handle, "D:\\logo.bmp", 1, 1);
$font = printer_create_font("Arial", 50, 70, 300, false, false, false, 0);
printer_select_font($handle, $font);
printer_draw_text($handle, $text1, 100, 400);
printer_draw_text($handle, $text2, 100, 500);
printer_draw_text($handle, $text3, 100, 600);
printer_draw_text($handle, $text4, 100, 700);
printer_draw_text($handle, $text5, 100, 800);
printer_draw_text($handle, $text6, 100, 900);
printer_draw_text($handle, $text7, 100, 1000);
printer_delete_font($font);
printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
exit;

function string_align($name = '', $price = '', $dollarSign = false){
$rightCols = 10;
$leftCols = 38;
if ($dollarSign) {
$leftCols = $leftCols / 2 - $rightCols / 2;
}
$left = str_pad($name, $leftCols) ;

$sign = ($dollarSign ? '$ ' : '');
$right = str_pad($sign . $price, $rightCols, ' ', STR_PAD_LEFT);
return "$left$right\n";
}

1

Решение

Попробуйте consolas шрифт.

Это шрифт одинаковой ширины, и он должен правильно отображаться на вашей распечатанной странице.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]