如何使PHP等到创建PDF用于打印?

时间:2015-06-18 07:05:16

标签: php laravel pdf printing cups

我有一个脚本可以创建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文档。我在Ubuntu上使用LEMP和CUPS打印服务器。我必须关闭并打开所有连接到计算机的打印机,只打开以前发送过的PDF文档。

提前致谢。

2 个答案:

答案 0 :(得分:1)

好吧,PHP有一个睡眠功能:

int sleep ( int $seconds )

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

也许看看异步求解?例如,之后pdf和电子邮件所需的流程信息

答案 1 :(得分:-1)

使用下面的代码,它就像一个超级按钮。

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