首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将ESCPOS-php打印到XPS文档编写器

将ESCPOS-php打印到XPS文档编写器
EN

Stack Overflow用户
提问于 2016-02-18 06:21:10
回答 1查看 2.6K关注 0票数 2

我正在尝试使用来自Php的Microsoft输出一个XPS文件,使用由Mike42编写的ESCPOS-php热打印机写入程序库found,以测试打印收据而不浪费收据纸张。

我已经将当前的打印机设置为"Microsoft XPS Document Writer",并包含了我的php网站中提到的库。

我试着打印这个网页(名为“p1PrinterSolution”)

代码语言:javascript
运行
复制
function letsPrint()
            {
                require_once(dirname(__FILE__) . "/escpos-php-master/Escpos.php");
                $connector = new FilePrintConnector("Microsoft XPS Document Writer");
                $printer = new Escpos($connector);              
                $printer -> text("Hello World!\n");
                $printer -> cut();
                $printer -> close();

            }
            #let's call the function now kid!
            letsPrint();

但是,我要更正这个错误:

代码语言:javascript
运行
复制
Fatal error: Call to undefined function gzdecode() in (the location of escpos-php) on line 173

如果我试图在不声明连接器的情况下调用$printer = new Escpos();,则会遇到以下错误:

代码语言:javascript
运行
复制
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文档编写器?我使用的是windows操作系统。尤其是Windows 7。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-20 03:06:31

即时错误是由不存在的gzdecode()引起的。它可在PHP > 5.4上使用。如果升级或安装'zlib‘插件,代码片段将在当前目录中创建一个名为“Microsoft文档编写器”的文件,并将一些命令保存到该文件中。

除非您使用'LPT1‘作为您的打印机,escpos实际上是通过网络在Windows上打印的,所以您需要共享打印机并使用它的URL打印。有一些这里的例子

代码语言:javascript
运行
复制
$connector = new WindowsPrintConnector("smb://localhost/Microsoft XPS Document Writer");

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

作为呈现收据的另一种方法,您可以通过其他一些方法创建PDF文件,escpos可以将这些文件转换为打印图像(通过希米克 PHP扩展)。这大大降低了打印速度,但在需要向客户发送电子邮件收据或希望重新依赖激光打印机的情况下,这是非常有用的。

print-from-pdf.php示例显示了这方面的API,我在下面对其进行了修改,以打印为LPT1

代码语言:javascript
运行
复制
<?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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35474265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档