首页 文章

mPDF永远不会在Ubuntu / Apache / PHP7堆栈上呈现

提问于
浏览
0

我正在使用mPDF libary将HTML页面转换为PDF .

这个库在运行PHP 5.6的本地机器和开发服务器上运行良好 .

然而,在亚马逊新配置的Ubuntu 16机器上,使用Apache 2.4.18和PHP 7,我无法使用它 .

症状是从未生成PDF - 浏览器只是永远旋转,最终我不得不退出浏览器以逃避进程 . 我没有收到任何错误消息 .

我已经通过我的脚本来查看进程被卡住的位置,并且这是在这个方法上:

$mPDF->WriteHtml($html);

我试过将一个非常简单的HTML字符串传递给函数,例如:

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
    <b>Hello!</b>
    </body>
</html>

这确实有效 .

所以我想知道HTML的质量 . 通过W3 Validator运行我的HTML显示了一些我现在已修复的错误,但这并没有解决我的问题 .

所以我现在想知道我的HTML的大小 - 这是一个正在呈现的大页面,通常在PDF上超过20页 .

我的脚本为进程分配了大量内存:

ini_set('memory_limit', '1024M');

并且服务器总共有8G的内存 .

我应该在服务器配置中检查哪些可能影响mPDF的内容?

谢谢你的期待 .

编辑

在进一步调试并将HTML剥离回更小和更小的部分后,我已经能够生成PDF - 但它非常慢 .

mPDF似乎也无法找到图像资源,因此我在PDF上获得了破碎的图像符号 . 我想知道这个服务器设置是否有一个奇怪的webroot / basePath,这意味着mPDF无法找到它正在寻找的资产?

编辑2

想知道这个问题现在是否重复mPDF not rendering images (mPDF error: IMAGE Error Could not find image file)

我看到了缓慢加载和丢失图像的相同问题

1 回答

  • 0

    因此,服务器具有IP防火墙,mPDF使用 file_get_contents() 将PDF的资产引用为外部资产,包括域名:

    file_get_contents('http://server.com/asset/anAsset.jpg');
    

    这意味着请求从服务器出来,回到它并被防火墙拒绝 .

    删除防火墙解决了我们的问题 .

    我仍然想知道mpdf是否可以在本地引用资产 . 其 basePath 属性的文档似乎表明它始终使用完整的域URL:

    https://mpdf.github.io/reference/mpdf-functions/setbasepath.html

相关问题