mPDF 5.7.1 - 图像显示为破碎[x]

问题描述 投票:16回答:7

我对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文件夹中。

有什么建议?

php html image mpdf
7个回答
63
投票

我有同样的问题,PNG图像显示为[X]何时生成带有mPDF的PDF。

我补充说:$mpdf->showImageErrors = true;

之后:$mpdf = new Mpdf();

并收到错误消息:

PNG图像所需的GD库(alpha通道)#

所以在运行apt-get install php5-gd后生成一个带有PNG的PDF就像一个魅力!


19
投票

在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模板中的链接应该与整个框架/系统相同。


9
投票

迁移脚本后我遇到了同样的问题。

问题是,mpdf文件夹中的tmp目录不可写。我希望它对某人有帮助。


1
投票

好。在对问题的最后评论(14:30)之后。这里使用与mPDF 5.4完全相同的代码。它将它的输出保存在脚本目录中作为test.pdf。防火墙问题?

编辑

我有以下目录/文件:

  • 图片 wallpaper01.jpg wallpaper02.jpg
  • index.php(源代码)

所以这些图像文件从脚本目录开始就像它看起来一样。

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;
}

Fully working example (download)


1
投票

对我来说,它现在正在运作。希望这会对某人有所帮助。

解决方案:尝试使用图像的相对路径而不是URL。映像必须托管在同一台服务器上。

例如:/var/www/mysite/image/xyz.jpg


0
投票

你可以试试这个:

$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


0
投票

在我的项目中我修复问题和解决方案是:

在服务器示例上设置src绝对路径:如果image在同一服务器上,则为src="/var/www/myproject/images/logo.png"。如果图像来自外部服务器src是绝对路径示例:src="https://www.google.bg/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"。希望这会对某人有所帮助。


-2
投票

更改为删除第二行,然后在此时初始化$ 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();
© www.soinside.com 2019 - 2024. All rights reserved.