php - 有没有办法使用 PHP 打印收据?
问题描述
我正在尝试这种方式,但它没有产生正确的对齐方式。我正在尝试在我的 LAN 中使用网络打印机“HP LaserJet Mono PCLmS 类驱动程序”进行打印。打印工作正常,但对齐不完美。
$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";
}
解决方案
试试consolas
字体。
它是一种宽度均匀的字体,应该在您的打印页面上正确呈现。
推荐阅读
- python - 使用 Python 的天蓝色 httptrigger blob 存储
- jira - Jira API 使用“EPIC NAME”创建问题
- javascript - 通过将对象放入数组来重新格式化 JSON
- apache-spark - 按聚合计数划分窗口
- node.js - FabricJS 文本与 NodeJs 节点画布文本 - 字体看起来不同
- laravel - Laravel Dusk 中的意外测试行为
- java - 我的 servlet 不工作我收到错误 HTTP404-not found 但我的 jsp +html 文件工作正常
- javascript - 使用初始状态反应 useState 钩子事件处理程序
- python - NameError: X while execution WebLogic Scripting Tool (WLST) script
- pandas - Shift 发生:使用 pandas shift 来组合行