Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要打印到XPS文档编写器的ESCPOS php_Php_Escpos - Fatal编程技术网

要打印到XPS文档编写器的ESCPOS php

要打印到XPS文档编写器的ESCPOS php,php,escpos,Php,Escpos,我试图使用Microsoft XPS Writer从Php输出一个XPS文件,并找到由Mike42编写的ESCPOS Php热敏打印机编写器库,以测试打印收据而不浪费收据纸 我已将当前打印机设置为“Microsoft XPS Document Writer”,并已将php网站中提到的库包括在内 我尝试打印此网页(名为“p1PrinterSolution”) 然而,我收到了这个错误: Fatal error: Call to undefined function gzdecode() in (th

我试图使用Microsoft XPS Writer从Php输出一个XPS文件,并找到由Mike42编写的ESCPOS Php热敏打印机编写器库,以测试打印收据而不浪费收据纸

我已将当前打印机设置为“Microsoft XPS Document Writer”,并已将php网站中提到的库包括在内

我尝试打印此网页(名为“p1PrinterSolution”)

然而,我收到了这个错误:

Fatal error: Call to undefined function gzdecode() in (the location of escpos-php) on line 173
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Argument passed to Escpos::__construct() must implement interface PrintConnector, null given.' in (path)\escpos-php-master\Escpos.php:176 Stack trace: #0 (path)\p1PrinterSolution.php(62): Escpos->__construct() #1 {main} thrown in (path)\escpos-php-master\Escpos.php on line 176
如果我尝试调用
$printer=new Escpos()未声明连接器时,我遇到以下错误:

Fatal error: Call to undefined function gzdecode() in (the location of escpos-php) on line 173
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Argument passed to Escpos::__construct() must implement interface PrintConnector, null given.' in (path)\escpos-php-master\Escpos.php:176 Stack trace: #0 (path)\p1PrinterSolution.php(62): Escpos->__construct() #1 {main} thrown in (path)\escpos-php-master\Escpos.php on line 176
如何设置ESCPOS php以正确打印到xps document writer?
我正在使用windows操作系统。尤其是Windows7

即时错误是由不存在导致的。它在PHP>5.4上提供。如果升级或安装“zlib”插件,代码段将在当前目录中创建一个名为“Microsoft XPS Document Writer”的文件,并将一些命令保存到该文件中

除非您使用“LPT1”作为打印机,否则escpos php实际上是通过网络在Windows上打印的,因此您需要共享打印机并使用其URL进行打印。这方面有一些例子:

然而,如果XPS文档编写器理解escpos php生成的二进制命令(ESC/POS),并且没有免费工具(我知道)在计算机上呈现ESC/POS命令以检查您的工作,我会感到惊讶。所以这意味着你需要浪费一些收据纸来做测试收据

作为呈现收据的另一种方式,您可以通过其他方式创建PDF文件,escpos php可以将其转换为图像进行打印(通过php扩展)。这大大降低了打印速度,但在您还需要通过电子邮件将收据发送给客户,或者希望能够依靠激光打印机的情况下,这是非常有用的

该示例显示了用于此目的的API,我在下面对其进行了修改,以打印到
LPT1

<?php
require __DIR__ . '/vendor/autoload.php';
use Mike42\Escpos\Printer;
use Mike42\Escpos\ImagickEscposImage;
use Mike42\Escpos\PrintConnectors\WindowsPrintConnector;

$pdf = 'resources/document.pdf';
$connector = new WindowsPrintConnector("LPT1");
$printer = new Printer($connector);
try {
    $pages = ImagickEscposImage::loadPdf($pdf);
    foreach ($pages as $page) {
        $printer -> graphics($page);
    }
    $printer -> cut();
} catch (Exception $e) {
  /*
     * loadPdf() throws exceptions if files or not found, or you don't have the
     * imagick extension to read PDF's
     */
    echo $e -> getMessage() . "\n";
} finally {
    $printer -> close();
}