2017-09-29 128 views
0

我试图用PHP脚本生成图像,并将它们放入由mPDF库生成的PDF文件中。PHP脚本生成的mPDF图像

我克隆了mpdf-examples版本库,其中包含几个示例,其中一个包含图片,链接为https://github.com/mpdf/mpdf-examples,因此您可以看到源代码。

example04_images.php中,由tiger.php返回的图像不起作用。

从命令行php example04_images.php > out.pdf执行时,该文件将包含[X]类型的图像,这意味着它们加载失败。

从浏览器加载脚本时,它会永久加载。

我作曲文件

{ 
    "name": "mpdf/examples", 
    "description": "Example repository for Mpdf HTML to PDF generator", 
    "require": { 
    "ext-gd": "*", 
     "mpdf/mpdf": "7.0.0-beta2" 
    } 
} 

当我删除的使用.php生成的图像,PDF格式正确生成的代码位。只有当我包含这些php生成的图像时才会失败。

php -v是:

PHP 7.0.24-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Sep 28 2017 16:33:02) (NTS)

看来,使用PHP生成的图像适用于很多人,甚至是文件说,这是可能的。但它不适合我。

+0

您使用什么服务器在浏览器中显示示例? – Finwe

+0

我正在使用PHP Cli。我应该改用别的东西吗?如果是这样,为什么php cli在这个失败?这在Heroku上也失败 –

+0

你的意思是你运行PHP嵌入式服务器'php -S'? Heroku的环境是什么? – Finwe

回答

0

mPDF在内部通过file_get_contents调用获取图像。当使用单线程服务器(如php -S)时,后续请求将停止应用程序。 This SO QA整齐地总结了这种行为。这就是浏览器请求无限期挂起的原因。

mPDF可以在单线程服务器上完成其某些功能,但不是全部。强烈建议使用合适的服务器(Apache,带PHP-FPM的nginx)。

从命令行运行脚本时,图像未正确加载很合理。图像路径是相对URL,必须由PHP处理才能返回正确的内容。如果没有后续的HTTP请求,没有简单的方法来实现它 - 这超出了简单的php cli调用的范围。

要让示例在CLI中工作,您必须链接到真实图像文件(我相信它在图像示例中正常工作),或者提供完整的URL到tiger.php脚本,其中脚本将是使用服务器进行处理。