• PHP连接打印机


    准备工作  在php.ini文件中打开 extension=php_sockets.dll
    确保socket正常运行
    <?php
    header("Content-type: text/html; charset=utf-8");
    
    class Netprint{
        public $host = '192.168.2.200';  //打印机IP
        public $port = 9100;  //默认端口
        public $socket;
        
        function initcon($host, $port = '9100'){//连接打印机
    
            if(!empty($host) && !empty($port)){
                $this->host = $host;
                $this->port = $port;
                $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("Could not create socket.
    ");
                socket_set_nonblock($socket);
                $con = @socket_connect($socket,$this->host,$this->port) or die("Could not connect server.
    ");;
                $flag = socket_select($r=array($socket), $w = array($socket), $f = array($socket), 2);
                if($flag == '1'){
                    socket_set_block($socket);
                }else{
                    $flag = socket_select($r=array($socket), $w = array($socket), $f = array($socket), 2);
                    if($flag == '1'){
                        socket_set_block($socket);
                    }else{
                        return false;
                    }
                }
                $this->socket = $socket;
                return true;
            }else{
                return false;
            }
        }
        function initprint(){//初始化打印
            if($this->socket){
                $sendstr1 = pack("C*", '27', '64');
                socket_sendto($this->socket,$sendstr1,strlen($sendstr1),0,$this->host,$this->port);
    
                $sendstr2 = pack("C*", '27', '83');
                socket_sendto($this->socket,$sendstr2,strlen($sendstr2),0,$this->host,$this->port);
    
                $sendstr3 = pack("C*", '27', '33', '0');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function sendprint($content){//打印内容
    
            if($this->socket){
    
                //$content = mb_convert_encoding($content,"GB2312","UTF-8");
                $content = iconv("UTF-8","GB18030",$content);
                $sendstr4 = pack('A*', $content);
                socket_sendto($this->socket,$sendstr4,strlen($sendstr4),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function cutter(){//切纸
            if($this->socket){
    
                $content = mb_convert_encoding("
    
    
    
    
    
    
    ","GB2312","UTF-8");
                $sendstr4 = pack('A*', $content);
                socket_sendto($this->socket,$sendstr4,strlen($sendstr4),0,$this->host,$this->port);
    
                $sendstr5 = pack("C*", '29', '86', '48');
                socket_sendto($this->socket,$sendstr5,strlen($sendstr5),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function closecon(){//关闭连接
            if($this->socket){
    
                socket_close($this->socket);
    
                return true;
            }else{
                return false;
            }
        }
        function normal(){
            if($this->socket){
    
                $sendstr3 = pack("C*", '29', '33', '0');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function middle(){//居中
            if($this->socket){
    
                $sendstr3 = pack("C*", '27', '97', '49');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function width_2x(){//宽*2
            if($this->socket){
                
                $sendstr3 = pack("C*", '29', '33', '16');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function height_2x(){//高*2
            if($this->socket){
                
                $sendstr3 = pack("C*", '29', '33', '1');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function bold(){//加粗
            if($this->socket){
    
                $sendstr3 = pack("C*", '27', '33', '8');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function underline(){//下划线
            if($this->socket){
    
                $sendstr3 = pack("C*", '27', '33', '128');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function align_left(){//左对齐
            if($this->socket){
    
                $sendstr3 = pack("C*", '27', '97', '48');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function align_right(){//右对齐
            if($this->socket){
    
                $sendstr3 = pack("C*", '27', '97', '50');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
        function font_1x(){//字体大小1x
            if($this->socket){
    
                $sendstr3 = pack("C*", '27', '33', '0');
                socket_sendto($this->socket,$sendstr3,strlen($sendstr3),0,$this->host,$this->port);
    
                return true;
            }else{
                return false;
            }
        }
    }
    
    $net = new Netprint();
    $msgtext = '';
    $ret = $net->initcon('192.168.00.00'); //打印机IP
    if($ret){
        $net->initprint();
    
        $net->width_2x();
        $content = "宽成二
    ";
        $net->sendprint($content);
        
        $net->normal();
        $net->normal();
        $net->height_2x();
        $content = "高成二
    ";
        $net->sendprint($content);
    
        $net->normal();
        $net->normal();
        $net->width_2x();
        $net->height_2x();
        //$net->bold();
        //$net->middle();
        $content = "宽高成二
    ";
        $net->sendprint($content);
    
        $net->normal();
        $net->normal();
        $net->font_1x();
        $content = "普通字体
    ";
        $net->sendprint($content);
    
        $net->cutter();
        //$net->closecon();
        $msgtext = '打印成功';
    }else{
        $msgtext .= "打印机连接不上 ";
    }
    echo $msgtext;
    ?>
  • 相关阅读:
    gRPC实战
    深入浅出docker
    jquery操作复选框(checkbox)的12个小技巧总结
    System.Diagnostics.Process.Start的妙用
    Redis持久化数据丢失及解决
    【ASP.NET 问题】IIS发布网站后出现 "处理程序“PageHandlerFactoryIntegrated”在其模块列表中有一个错误"的解决办法
    asp.net 网页抓取内容
    Ajax学习资源大全[本来是转载的,但是现在我增加了很多]
    jquery如何判断checkbox(复选框)是否被选中
    JS获取屏幕高度
  • 原文地址:https://www.cnblogs.com/qhorse/p/5000065.html
Copyright © 2020-2023  润新知