0

我想在本地 wamp 托管应用程序中将收据直接(当然是静默地)打印到连接到客户端系统的相应点阵打印机上。尽管我通过在 mozilla 中使用 jsprintsetup 在这方面取得了成功。但打印机速度始终成为挑战。

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

真正搞砸的是;

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

但是,无论是从客户端还是从服务器都没有将打印机连接到连接到客户端系统的打印机。

Php 警告:(“警告:fopen(\192.168.1.13\TVS MSP 250 星):无法打开流: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/>";
}
4

2 回答 2

0

也许你已经解决了这个问题,但这可能会帮助其他有类似问题的人。

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

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

于 2016-06-30T07:56:54.987 回答
0

你可以使用mike42 escpos github插件。

下载后,您需要为您的打印机制作一个连接器。用这个

我的共享打印机和计划任务运行的 php 文件的示例是:

require 'vendor/autoload.php';
use Mike42\Escpos\Printer;
use Mike42\Escpos\PrintConnectors\FilePrintConnector;
use Mike42\Escpos\CapabilityProfile;
use Mike42\Escpos\PrintConnectors\WindowsPrintConnector;


$connector = new WindowsPrintConnector("smb://computername/printername");
$printer = new Printer($connector);

$printer -> text("hello world");
$printer -> text("\n");
$printer -> text("\n");
$printer -> text("hello again");
$printer -> cut();
$printer -> close();

这已经足够快了。

于 2022-01-03T14:12:47.163 回答