客户端系统中的PHP直接打印

时间:2014-11-30 11:46:21

标签: php printing printing-web-page barcode-printing

我想直接打印收据(当然是静默的)到附加到本地wamp托管应用程序中的客户端系统的各个点阵打印机。虽然我在mozilla中使用jsprintsetup是成功的。但打印机速度始终是一个挑战。

几天后,我能够直接从php应用程序发送打印作业,没有任何延迟,打印机也从localhost服务器和客户端系统响应极好。但是我在Windows域网络中测试了这个应用程序,并且在实际情况下不会有任何域网络,并且应用程序要求在具有或不具有域的任何LAN中完成此操作。我不确定,但没有域网可能是问题。

真正搞砸的事情是;

localhost服务器打印收据。没有问题!从客户端我们可以将打印作业发送到连接到localhost服务器的打印机。超细!

但是没有打印机连接到连接到客户端系统的打印机,也不是从客户端到服务器。

Php警告:("警告:fopen(\ 192.168.1.13 \ TVS MSP 250 Star):无法打开流:D:\ wamp")中的权限被拒绝

注意:我一直运行以完成此操作,包括安装php_printer.dll,共享具有完全权限的wamp和www文件夹,使用" \\ systemname \ printername"还有很多其他东西来检查是否会这样做..但没有帮助......

请帮帮我..

这是我的代码;

$bold1 = Chr(27) . Chr(69); // semi em. bold
$bold0 = Chr(27) . Chr(70); // "" 
$initialized = chr(27).chr(79);
$initialized = chr(27).chr(64); // initialize printer
$initialized .= chr(27).chr(51).chr(40); //Select 6 lines per inch Line Spacing
$initialized .= chr(10).chr(12).chr(15).chr(50).chr(20); // Draft, Font, Pitch
$initialized .= chr(27).chr(79); // Cancel Skip Perforation
$initialized .= chr(27).chr(106).chr(108); // Reverse Line Feed
$condensed0 = chr(18);

$initialized .= chr(27).chr(97).chr(0); //justify left
$initialized .= chr(27).chr(37).chr(0); // Selects normal character set

$initialized .= chr(27).chr(67).chr(15); // Page Length
$initialized .= chr(27).chr(67).chr(5);
$initialized .= chr(13);
$data  = $initialized;
$data .= chr(27).chr(79); // Cancel Skip Perforation
$data .= chr(27).chr(120).chr(48); // Select Draft Mode
$data .= chr(27).chr(97).chr(0); // Justify Center
//$data .= chr(14); // Double Width For One Line
//$condensed1 = chr(15);                                    

$data .= $bold1."           HEADER      ".$bold0."\n";
$data .= chr(10);
$data .= "           "SUB HEADER"   "."\n";
//$data .= chr(10);
$data .= "             "."BASE LINE".""."\n";
//$data .= chr(10);
$data .= "   "."\n";
$data .= "Date: ".$time."       "."\n";

$data .= "|----------------------------------------------------------|\n";

$data .= "Thank You! Print Testing Successfull"."\n";

$data .= "|----------------------------------------------------------|\n";
$data .= chr(27).chr(102).chr(49);
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";
$data .= " \n";

$fop = fopen($printer, "RAW");

if (!$fop){
    echo 'Selected Printer: '.$printer;
    print "<br/>";
    print "<img src=\"$image2\" width=\"16px\" height=\"15px\"\ align=\"absmiddle\"/>";
    print " ";
    echo  'Sorry! Could Not Connect To The Selected Printer';
    print "<br/>";
}
else
{
    print "<br/>";
    print "<img src=\"$image\" width=\"16px\" height=\"15px\"\ align=\"absmiddle\"/>";
    print " ";
    echo  'Printer Connected Successfully'; 
}
$data .= "\x00\x1Bi\x00";

if (!fwrite($fop,$data)){
    print "<img src=\"$image2\" width=\"16px\" height=\"15px\"\ align=\"absmiddle\"/>";
    print " ";
    echo 'Printing Failed!';
    print "<br/>";
}  
else
{
    print "<br/>";
    print "<img src=\"$image\" width=\"16px\" height=\"15px\"\ align=\"absmiddle\"/>";
    print " ";
    echo 'Printing Succeeded!';
    print "<br/>";
}

1 个答案:

答案 0 :(得分:0)

也许你已经解决了这个问题,但这可能有助于解决类似问题。

如果您希望客户端在客户端打印机中打印,那么为什么不在客户端计算机上安装webserver和php,并让客户端计算机运行本地打印的php代码。

使用POST方法或类似方法将数据从服务器网站传递到本地。