【问题标题】:PHP Printer How to use printer_draw_text FunctionPHP打印机如何使用printer_draw_text函数
【发布时间】: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_page printer_start_page 是否有效?
  • 嗨,克里斯,谢谢你的评论。不,它对我不起作用,它仍然会打印出 2 张票......但我发现了如何做到这一点,见下文
  • 我使用字符串来排列函数 $lineofText = explode(',',$text);而不是做一个for循环来制作新的printer_draw_text函数
  • 酷,将最终代码作为答案放入该解释中。
  • @Chris 我知道这真的很旧,但你知道为什么当我在同一页面上使用多个 printer_draw_text 时它只输出最后一个吗?

标签: php printing epson


【解决方案1】:

这里是工作示例 (* + Print.Dll 和 Win 7 操作系统)

  <?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( "-"," ", $text);
$text = str_replace( "/r/n"," \r\n , ", $text); // replace and make string Array

$lineofText = explode(',',$text); // Array to stand to for


# Examples 

// testing font
//echo printer_logical_fontheight($printer, 72);

//printer_set_option($printer, PRINTER_MODE, "RAW");



$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);    // Text

$asize=sizeof($lineofText);             // Make NewLine per Array 
   for($i=0; $i<$asize; $i++)    {
                                    printer_draw_text($handle, $lineofText[$i],1,1);
                                }

printer_end_page($handle);  // End Text

//printer_start_page($handle); // Start Logo QR
//printer_draw_bmp($handle, "c:\\QR.bmp", 60, 0);  // Logo Dir, lenght H , With V
//printer_end_page($handle);  // End Logo QR

printer_end_doc($handle);   // Close document 
printer_close($handle);     // Close Pritner


?>

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2020-02-18
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多