MPDF 5.7.1 - изображение отображается как сломанный [x]

У меня небольшая проблема с 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].

Я достаточно искал googled, чтобы сделать вывод, что это нужно сделать таким образом, но я также попробовал realpath к файлу. Все еще ничего.

Единственное, что я не пробовал, это <img src="logo11w.png"> и копирование изображения в папку, потому что я не знаю, в какую папку я должен скопировать файл logo11w.png.

Любые предложения?

Ответ 1

У меня была та же проблема, что и изображения PNG, отображаемые как [X] при создании PDF файлов с помощью mPDF.

Я добавил: $mpdf->showImageErrors = true;

После: $mpdf = new Mpdf();

и получил сообщение об ошибке:

Библиотека GD, необходимая для изображения PNG (альфа-канал) #

Итак, после запуска apt-get install php5-gd создания PDF с PNG работал как шарм!

Ответ 2

Включение изображений довольно сложно в mPDF. У меня были некоторые проблемы. Я нашел больше проблем.

Сначала вы должны включить отладочную переменную:

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

Обычно у людей нет модуля GD для PHP. На машине linux выполните:

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

На серверах Windows php_gd2.dll входит в стандартную установку PHP, но по умолчанию не включен. Чтобы включить его, раскомментируйте строку extension = php_gd2.dll в файле php.ini(удалите # с начала этой строки) и перезапустите расширение 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 должно быть таким же, как и для всей вашей рамки/системы.

Ответ 3

Я столкнулся с такой же проблемой после миграции script.

Проблема заключалась в том, что каталог tmp внутри папки mpdf не был доступен для записи. Надеюсь, это поможет кому-то.

Ответ 4

Ok. После последнего комментария по вопросу (14:30). Здесь тот же самый код, который работает с mPDF 5.4. И это сохраняет его вывод в каталоге скриптов как test.pdf. Проблемы с брандмауэром?

Edited

У меня есть следующие каталоги/файлы:

  • Изображения
    • wallpaper01.jpg
    • wallpaper02.jpg
  • index.php(исходный код)

Итак, эти файлы изображений относительно начинаются с каталога script, как это выглядит.

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

Полностью рабочий пример (загрузка)

Ответ 5

Для меня он работает на данный момент. Надеюсь, это поможет кому-то.

Решение. Попробуйте относительный путь изображения вместо URL. Изображение должно размещаться на одном сервере.

Пример:/var/www/mysite/image/xyz.jpg

Ответ 6

Вы можете попробовать это:

$mpdf->imageVars['myvariable'] = file_get_contents('alpha.png');

или

$html = '<img src="var:myvariable"/>';
$mpdf->WriteHTML($html);

после этого вы должны сделать:

$mpdf->Image('var:myvariable', 0, 0);

Подробнее об этом читайте в документации: mPDF Загрузить изображение

Ответ 7

В моем проекте я решаю проблему, и ее решение:

Установите абсолютный путь src на примере сервера: src="/var/www/myproject/images/logo.png" если изображение находится на том же сервере. Если изображение с внешнего сервера, src является примером абсолютного пути: src="https://www.google.bg/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png". Надеюсь, это кому-нибудь поможет.

Ответ 8

изменить на удалите вторую строку перед инициализацией $html его undefined в это время. новый код будет выглядеть как

$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();