mPDF 5.7.1 - image displays as a broken [x]

2020-02-23 06:40发布

I have a small issue with mPDF (version 5.7.1).

This code should generate PDF with image file:

 $mpdf = new mPDF();
 $html = '<img src="https://www.google.pl/images/srpr/logo11w.png"/>';
 $mpdf->WriteHTML($html);
 $mpdf->debug = true; 
 $output = $mpdf->Output(); 
 exit();

Well there is no image but an [x] instead.

I've googled enough to get to the conclusion that it has to be done this way but I also tried realpath to the file. Still nothing.

The only thing I haven't tried is <img src="logo11w.png"> and copying the image into the folder because I don't know into which folder I should copy file logo11w.png.

Any suggestions?

10条回答
ゆ 、 Hurt°
2楼-- · 2020-02-23 07:00

Including images is kinda tricky in mPDF. I had some issues as well. I found more kind of problems.

At first you should turn on debug variable:

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

Usualy people don't have installed GD module for PHP. On linux machine, execute:

sudo apt-get install php5-gd
sudo service apache2 restart

On Windows servers, php_gd2.dll is included in a standard PHP installation, but is not enabled by default. To enable it, uncomment the extension=php_gd2.dll line in your php.ini file (remove the # from the beginning of that line) and restart the PHP extension. [1]

If you get this error you probably see [x] image:

mPDF error: IMAGE Error (http://www.domain.com/directory/image.jpg): Could not find image file

Check the url if your image exists and if the image is accessible. If yes then you can try to change absolute URL to relative. You can try both versions:

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

Actually I also had a problem with PNG formats. Converted PNG image to JPG worked fine.

Linking in mPDF templates should be same like for whole your framework/system.

查看更多
smile是对你的礼貌
3楼-- · 2020-02-23 07:08

change to remove the second line before initializing $html its undefined at that time. new code will be as

$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();
查看更多
女痞
4楼-- · 2020-02-23 07:10

It's enough The solve is :

$mpdf->curlAllowUnsafeSslRequests = true;

It's all

查看更多
ら.Afraid
5楼-- · 2020-02-23 07:16

I have encountered the same problem after migrating the script.

The problem was, that the tmp directory inside the mpdf folder was not writable. I hope it helps someone.

查看更多
叛逆
6楼-- · 2020-02-23 07:16

In my case, the problem was just the usage of transparents PNG using the 6.0 version. This bug was fixed on the mpdf 6.1 version.

I successfully solved the problem downloading the 6.1 version from here and overriding the mpdf files on my project.

查看更多
ゆ 、 Hurt°
7楼-- · 2020-02-23 07:17

Ok. After the last comment on question (14:30). Here the exact same code that IS working with mPDF 5.4. And it saves it's output on scripts directory as test.pdf. Firewall issues?

Edited

I have the following directories / files:

  • images
    • wallpaper01.jpg
    • wallpaper02.jpg
  • index.php (source code)

So these image files are relatively starting from the script directory as it looks like.

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)

查看更多
登录 后发表回答