【发布时间】:2012-06-16 10:50:56
【问题描述】:
对不起我的英语不好
我的问题是,如何使用printer_draw_text 函数打印出一个长字符串? (参见示例)在 Epson Billing Printer 上。
所有示例都有效(来源:http://www.php.net/manual/en/book.printer.php)
但是当我想组合一个 Logo.bmp + 一长串文本时,它只会打印出 logo 和 1 行 sting:
示例:
<?php
# DEMO PRINTER
//http://fr.php.net/manual/en/function.printer-write.php
/*
$_SESSION['PrintBuffer']=''; //printer buffer
print_sub_1();
print_sub_2();
print_sub_3();
$_SESSION['PrintBuffer']
*/
$Printer_name = $_GET['Printer'];
$text = $_GET['value'];
$text = str_replace( '/r/n',PHP_EOL, $text);
$handle = printer_open($Printer_name); // Open Pritner by Name
printer_set_option($handle, PRINTER_MODE, "raw");
//printer_set_option($handle, PRINTER_TEXT_ALIGN, PRINTER_TA_LEFT);
printer_start_doc($handle, "Print"); // Name Document
printer_start_page($handle); // Start Logo
printer_draw_bmp($handle, "c:\\logo.bmp", 60, 0); // Logo Dir, lenght H , With V
printer_end_page($handle); // End Logo
printer_start_page($handle);
printer_draw_text($handle, $text,1,1);
printer_end_page($handle); //
printer_end_doc($handle); // Close document
printer_close($handle); // Close Pritner
?>
输出示例:
徽标.bmp
Test.... // 但只有 1 行 :(
printer_write($handle, "要打印的文本");工作!它打印出孔字符串+ \r\n 但它在新纸上打印出徽标:(
需要的例子
徽标
1 x 产品
printer_draw_text($handle, $text,1,1); 仅打印出 1 x 产品 2 x
【问题讨论】:
-
如果您使用
printer_write并删除徽标和文字之间的printer_end_pageprinter_start_page是否有效? -
嗨,克里斯,谢谢你的评论。不,它对我不起作用,它仍然会打印出 2 张票......但我发现了如何做到这一点,见下文
-
我使用字符串来排列函数 $lineofText = explode(',',$text);而不是做一个for循环来制作新的printer_draw_text函数
-
酷,将最终代码作为答案放入该解释中。
-
@Chris 我知道这真的很旧,但你知道为什么当我在同一页面上使用多个
printer_draw_text时它只输出最后一个吗?