【问题标题】:PHP printing to local Thermal Printer, does not work without networknamePHP 打印到本地热敏打印机,没有网络名称就无法工作
【发布时间】:2012-05-03 08:27:31
【问题描述】:

我用 PHP 构建了一个 POS(销售点)应用程序,可以直接打印到热敏打印机。在大多数情况下,我使用 WAMP 在本地网络服务器上运行应用程序。

部分打印代码为:

$printer = "\\\\localhost\\TM-T88V";

// Open connection to the thermal printer
$fp = fopen($printer, "w");
if (!$fp){
  die('no connection');
}

$data = " PRINT THIS ";

// Cut Paper
$data .= "\x00\x1Bi\x00";

if (!fwrite($fp,$data)){
  die('writing failed');
}

只要 PC 连接到网络,此代码就可以正常工作。 我可以通过使用 fopen 和 "LOCALHOST" 或 "COMPUTER-NAME" 让 PHP 连接到共享打印机(在同一台电脑上或网络中的电脑上): fopen("\\localhost\TM-T88V" ,'w');

如果我断开电脑与网络的连接,PHP 将无法再连接到 \\localhost 或 \\COMPUTER-NAME。

我尝试过类似的方法:fopen('TM-T88V')、fopen('\\.\TM-T88V'),但我不断收到“[function.fopen]: failed to open stream: No such文件或目录...”。

如何在没有活动网络连接的情况下连接到本地(共享)打印机(最好按名称)?

【问题讨论】:

  • 使用环回适配器我找到了解决问题的方法,这样计算机仍然“认为”它有网络连接,因此它可以解析 \\localhost。但我认为应该有一种方法可以直接连接到打印机。
  • 嗨,鲍克。您能否更详细地解释一下这个问题的解决方案。我们和你一年前的情况一样。我们无法将打印件发送到 Zebra 热敏打印机。我们也尝试了您的代码,但没有成功。
  • 嗨,鲍克。非常感谢你的想法。我们最终也能够解决这个问题。我们唯一要做的就是通过网络共享打印机,然后通过网络访问它。环回适配器对我们不起作用。
  • @Nitin,抱歉回复晚了。很高兴看到你解决了它。使打印机成为共享打印机将使您能够使用 php 代码打印数据。如果您需要访问同一台计算机上的打印机,并且该计算机没有活动的网络连接,那么您将需要一个环回适配器(我还没有找到解决方法)。在这种情况下,您还需要共享打印机。

标签: php printing fopen thermal-printer


【解决方案1】:

你试过fopen("PRN", "w")吗?

【讨论】:

  • 是的,我有。它还给了我“无法打开流...”错误。我已将热敏打印机设置为默认打印机,但这也无济于事。
【解决方案2】:

这是我在 PHP 中用于打印作业的代码 sn-p:

$handle = printer_open('Printer Name in windows here');

if($handle) { // Make sure the printer is present before sending the job
// print job here
}

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    相关资源
    最近更新 更多