【问题标题】:How to make PHP wait until PDF is created for printed?如何让 PHP 等到为打印创建 PDF?
【发布时间】:2015-09-03 16:38:18
【问题描述】:

我有一个脚本,可以创建 PDF 文档并继续发送以进行打印。碰巧我需要等待文档被创建,检查并最近发送打印。

    define('TIKET_DIR', public_path('temp/'));
    $token = sha1(microtime().'tk');
    $pdfPath = TIKET_DIR.$token.'.pdf';    
    $html2pdf = new HTML2PDF('V', array('72', '110'), 'es', true, 'UTF-8', 0);
    $html2pdf->WriteHTML($html);
    $html2pdf->Output($pdfPath, 'F');
    $cmd = "lpr -P".$ococina->impresora." ";
    $cmd .= $pdfPath;
    $response = shell_exec($cmd);

变量 $html 是动态创建的,可能会延迟。通常打印 PDF 文档,但有时它不打印,我认为这是因为 lpr 命令在 PDF 文档未准备好的情况下执行。我在带有 CUPS 打印服务器的 Ubuntu 上使用 LEMP。我必须关闭并打开所有连接到计算机的打印机,并且只打印之前发送的 PDF 文档。

提前致谢。

【问题讨论】:

  • php函数被阻塞
  • 如果是这样,那么为什么有时打印机会停止?我有 3 台热敏打印机 Epson TM - T20II 一次连接到服务器和客户端。它可能是重载的进程?驱动错误?

标签: php laravel pdf printing cups


【解决方案1】:

使用下面的代码,它就像一个魅力。

html2pdf().from(element).save().then(function () {
    // Whatever you want to happen when it's done!
});

【讨论】:

    【解决方案2】:

    嗯,PHP有一个睡眠功能:

    int sleep ( int $seconds )
    

    (见:http://php.net/manual/en/function.sleep.php) 但这不是解决问题的好方法。此外,您可能会遇到由您的网络服务器或 PHP 设置定义的最大执行时间。

    也许研究异步解决方案?例如,之后处理pdf和电子邮件所需的信息

    【讨论】:

    • 它是一个餐厅软件,热敏打印机可以在其中接收订单。我会试着睡觉,但不理想。
    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 2011-07-01
    • 2018-09-11
    • 1970-01-01
    • 2011-06-04
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多