谁熟悉php_printer如何使用php操作连接到windows的打印机?

打印机是godex 的ez1105 经济型
标签打印机,使用这个打印机需要安装他的驱动以及使用相应的软件绘制条码进行打印,现在的需求是使用php对打印机进行打印内容的指定和打印操作,如何解决?除了php的方案,是否有其他的方式?

php_printer

<?php
$handle = printer_open('Godex EZ-1105');
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$lfont = printer_create_font("Arial", 30,30, PRINTER_FW_BOLD, false, false, false, 0);
printer_select_font($handle, $lfont);

printer_set_option($handle, PRINTER_MODE, "RAW");
printer_set_option($handle, PRINTER_PAPER_FORMAT, PRINTER_FORMAT_CUSTOM);
printer_set_option($handle,PRINTER_PAPER_WIDTH,42);
printer_set_option($handle,PRINTER_PAPER_LENGTH,30);

echo printer_get_option($handle,PRINTER_RESOLUTION_X);
echo '<br ?>';
echo printer_get_option($handle,PRINTER_RESOLUTION_Y);
echo "<br />";
echo 'format'.printer_get_option($handle,PRINTER_PAPER_FORMAT);
echo "<br />";
echo "modal".printer_get_option($handle,PRINTER_MODE);
echo "<br />";
echo "width".printer_get_option($handle,PRINTER_PAPER_WIDTH);
printer_draw_text($handle, "Msup", 260, 0);
printer_delete_font($lfont);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

图片描述

阅读 16k
6 个回答

最终找到的一个可能的原因是,使用浏览器执行php 去访问打印机,应该会读取浏览器的打印配置(只是可能原因),在命令行中直接执行调用打印机的php脚本,可以正确进行打印,可以正确读取打印机的配置首选项。

另外:因为ez1105这款标签打印机是属于一个入门版的打印机,并且只能通过usb方式进行连接.

  1. 如果是网络打印机的话,可以使用socket直接进行通信

  2. 如果你的打印机支持esc pos指令集,可以使用这个库mike42/escpos-php

附:php_printer.dll扩展下载地址

最后感谢incNick同学给出的解决思路!


2016/6/7更新
找到上面命令行可以正常打印浏览器打印不正常的原因——是因为用户权限的问题,因为使用命令行打印是以管理员的什么运行的,可以读取系统设置,而Apache运行是以当前系统登录用户的身份去执行,所以解决办法就是将当前Windows登录用户切换到超级管理员,或者在Apache service中对服务属性进行修改!

第二个遇到的问题是中文乱码的问题,解决办法是在create_font的时候第一个参数$face,需要选择一个支持UTF-8编码的中文字体,并且确认你的打印机编码的类型!

最终简单总结了一下,地址:http://www.cnblogs.com/skyfyn...

css就行,比如<style media="print">,这样打印机看到的是完全不同的内容了。自己搜索一下,这方面的例子应该挺常见的。

新手上路,请多包涵

您这个可以支持打印图片或者一维码吗

新手上路,请多包涵

局域网地址需要加上ip,例如:
$handle = printer_open("\\\\192.168.1.250\\EPSON L550 Series");

推荐问题
宣传栏