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

时间:2014-02-28 10:37:29

标签: php html image mpdf

我对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复制到哪个文件夹。

有什么建议吗?

11 个答案:

答案 0 :(得分:61)

在使用mPDF生成PDF时,PNG图像显示为[X]时遇到了同样的问题。

我添加了:$mpdf->showImageErrors = true;

之后:$mpdf = new Mpdf();

并收到错误消息:

  

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

因此,在运行apt-get install php5-gd生成带有PNG的PDF后,就像魅力一样!

答案 1 :(得分:19)

在mPDF中包含图像有点棘手。我也有一些问题。我发现了更多的问题。

首先你应该打开调试变量:

$mpdf = new mPDF();    
$mpdf->showImageErrors = true;

Usualy人们没有为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] image:

  

mPDF错误:图片错误(http://www.domain.com/directory/image.jpg):可以   找不到图像文件

如果图像存在且图像可访问,请检查网址。如果是,那么您可以尝试将绝对URL更改为相对。您可以尝试两个版本:

<img src="directory/image.jpg">
<img src="./directory/image.jpg">

实际上我也遇到了PNG格式的问题。转换PNG图像到JPG工作正常。

mPDF模板中的链接应与整个框架/系统相同。

答案 2 :(得分:8)

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

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

答案 3 :(得分: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)

答案 4 :(得分:1)

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

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

Ex:/var/www/mysite/image/xyz.jpg

答案 5 :(得分:1)

就我而言,问题仅在于使用6.0版本的透明PNG。此错误已在mpdf 6.1版本上修复。

我成功解决了从here下载6.1版本并覆盖项目中的mpdf文件的问题。

答案 6 :(得分: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

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

足够了 解决方法是:

$mpdf->curlAllowUnsafeSslRequests = true;

全部

答案 9 :(得分:0)

我正在使用Code Ignitor和mpdf。安装php-gd5库后,我不得不使用configure命令--with-gd重新安装php

答案 10 :(得分:-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();