我对mPDF(版本5.7.1)有一个小问题。
此代码应生成带有图像文件的PDF:
$mpdf = new mPDF();
$html = '<img src="https://www.google.pl/images/srpr/logo11w.png"/>';
$mpdf->WriteHTML($html);
$mpdf->debug = true;
$output = $mpdf->Output();
exit();
那么没有图像,而是[x]
。
我已经google了足够的结论,它必须以这种方式完成,但我也试过realpath到文件。依然没有。
我唯一没有尝试过的是<img src="logo11w.png">
并将图像复制到文件夹中因为我不知道应该将文件复制到logo11w.png
文件夹中。
有什么建议?
我有同样的问题,PNG图像显示为[X]何时生成带有mPDF的PDF。
我补充说:$mpdf->showImageErrors = true;
之后:$mpdf = new Mpdf();
并收到错误消息:
PNG图像所需的GD库(alpha通道)#
所以在运行apt-get install php5-gd
后生成一个带有PNG的PDF就像一个魅力!
在mPDF中包含图像有点棘手。我也有一些问题。我发现了更多的问题。
首先你应该打开调试变量:
$mpdf = new mPDF();
$mpdf->showImageErrors = true;
通常人们没有为PHP安装GD模块。在linux机器上,执行:
sudo apt-get install php5-gd
sudo service apache2 restart
在Windows服务器上,php_gd2.dll包含在标准PHP安装中,但默认情况下未启用。要启用它,请取消注释php.ini文件中的extension = php_gd2.dll行(从该行的开头删除#)并重新启动PHP扩展。 [1]
如果出现此错误,您可能会看到[x]图像:
mPDF错误:IMAGE错误(http://www.domain.com/directory/image.jpg):找不到图像文件
如果图像存在且图像可访问,请检查URL。如果是,那么您可以尝试将绝对URL更改为相对。您可以尝试两个版本:
<img src="directory/image.jpg">
<img src="./directory/image.jpg">
实际上我也遇到了PNG格式的问题。转换PNG图像到JPG工作正常。
mPDF模板中的链接应该与整个框架/系统相同。
迁移脚本后我遇到了同样的问题。
问题是,mpdf文件夹中的tmp
目录不可写。我希望它对某人有帮助。
好。在对问题的最后评论(14:30)之后。这里使用与mPDF 5.4完全相同的代码。它将它的输出保存在脚本目录中作为test.pdf。防火墙问题?
编辑
我有以下目录/文件:
所以这些图像文件从脚本目录开始就像它看起来一样。
require_once __DIR__ . DIRECTORY_SEPARATOR . 'MPDF/mpdf.php';
try {
$mpdf = new mPDF();
$mpdf->WriteHTML('<img src="images/wallpaper01.jpg" alt="" width="480">');
$mpdf->WriteHTML('<img src="images/wallpaper02.jpg" alt="" width="480">');
$mpdf->Output(__DIR__ . DIRECTORY_SEPARATOR . 'test.pdf', 'F');
} catch(Exception $e) {
echo $e;
}
对我来说,它现在正在运作。希望这会对某人有所帮助。
解决方案:尝试使用图像的相对路径而不是URL。映像必须托管在同一台服务器上。
例如:/var/www/mysite/image/xyz.jpg
你可以试试这个:
$mpdf->imageVars['myvariable'] = file_get_contents('alpha.png');
要么
$html = '<img src="var:myvariable"/>';
$mpdf->WriteHTML($html);
在那之后,你应该做:
$mpdf->Image('var:myvariable', 0, 0);
在文档中阅读更多相关信息:mPDF Load Image
在我的项目中我修复问题和解决方案是:
在服务器示例上设置src绝对路径:如果image在同一服务器上,则为src="/var/www/myproject/images/logo.png"
。如果图像来自外部服务器src是绝对路径示例:src="https://www.google.bg/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"
。希望这会对某人有所帮助。
更改为删除第二行,然后在此时初始化$ html未定义。新代码将作为
$mpdf = new mPDF();
$html= "<img src='https://www.google.pl/images/srpr/logo11w.png' alt=''>";
$mpdf->WriteHTML($html);
$mpdf->debug = true;
$output = $mpdf->Output();
exit();