2012-06-13 2 views
0

Извините за мой плохой английскийPHP принтер Как использовать printer_draw_text Функция

Мой вопрос, как я могу использовать printer_draw_text функцию для печати длинную строку? (См. Пример) на Epson Billing Printer.

Всех примеров работа (источник: http://www.php.net/manual/en/book.printer.php)

Но когда я хочу, чтобы объединить Logo.bmp + длинную строку текста, то он будет печатать только логотип и 1 линию жала:

Пример:

<?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 

?> 

Выход Пример:

Logo.bmp

тест .... // Но только одна линия :(

printer_write ($ ручка, "Текст для печати"); Работает !!! он печатает отверстие строки + с \ г \ п Но Он печатает логотип на новой бумаге :(

Needed например

< Logo - здесь

1 х продукт < - длинная строка 1 х продукт \ г \ п (рабочая printer_write функция) 2 х продукт ECR.

printer_draw_text($handle, $text,1,1); печатает только 1 х 2 х продукт

+0

ли работать это, если вы используете 'printer_write' и удалить' 'printer_end_page' printer_start_page' между логотипом и текстом? – Chris

+0

Привет Крис thnx для вас комментарий. Нет, это не сработает для меня, он все равно распечатает 2 билета ... Но я нашел, как это сделать, см. Ниже – Paul

+0

Я использую строку для функции Array $ lineofText = explode (',', $ text); и чем сделать цикл for, чтобы создать новый файл printer_draw_text functoin – Paul

ответ

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 


?> 
Смежные вопросы