Dompdf не отображает картинки, почему?

Ссылка скопирована
PHP
1 ответ

Dompdf при выгрузке пдф не отображает изображения. На локальной машине отображаются, а после выгрузки на VPS нет. Пишет ошибку image not found or unknow

Ссылка на изображения пробовал разные и удаленные и ссылался внутри сервера, указывая полный путь.
Указывал такие флаги.Все равно не работает. В чем может быть проблема?

$dompdf->set_option('enable_remote',TRUE); $dompdf->set_option('isRemoteEnabled',TRUE);

$dompdf->set_option('enable_remote',TRUE); $dompdf->set_option('isRemoteEnabled',TRUE);

Версия 2.0

Дополнительно:

Пути к файлам посмотри

  • pLavrenov, Работают - перепроверил 100 раз. Поэтому и пришел сюда ( При открытии ссылки просто в браузере фото отображается
  • Андрей, как указываешь src?
  • ProjectSoft, пробовал по разному
    удаленная ссылка
    удаленная ссылка на сам проект
    удаленная ссылка с фронта (фронт на вью)
    через public_path в ларе
    через указание полного пути /var/www и так далее
  • Андрей, А может быть, что пакет обработки изображений не установлен? GD?
  • Dmitry Bay, установлен проверено =(
  • Андрей, А любую другую картинку пробовали вставить?
  • Dmitry Bay, да вот сейчас даже проверил - взял с яндекса картинку в открытом доступе и тоже он ее не отобразил
  • Андрей,
    Не знаю, как у вас...
    <?php require_once('vendor/autoload.php'); use DompdfDompdf; use DompdfOptions;  function siteURL() {     $protocol = 'http://'; 	if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'http') { 		$protocol = 'https://'; 	}     return $protocol . $_SERVER['HTTP_HOST'] . '/'; }  $dirImg = __DIR__ . DIRECTORY_SEPARATOR; $dirImg = str_replace('\', '/', $dirImg);  define('BASE_PATH', $dirImg); define('BASE_URL', siteURL());   $options = new Options(); $options->set('tempDir', BASE_PATH . "assets/temp"); $options->set('chroot', BASE_PATH); $options->set('isRemoteEnabled', true);  $dompdf = new Dompdf($options);  $dompdf->loadHtml(' <p>Image by link on any server</p> <p><img src="https://avatars.githubusercontent.com/u/8142648?v=4"></p>  <p>Image by link on your server</p> <p><img src="' . BASE_URL . 'assets/images/projectsoft.png"></p>  <p>Image showing full path</p> <p><img src="' . BASE_PATH . 'assets/images/projectsoft.png"></p>  <p>Image with incomplete path</p> <p><img src="assets/images/projectsoft.png"></p>  <p>BASE_URL -> ' . BASE_URL . '</p>  <p>BASE_PATH -> ' . BASE_PATH . '</p>');  $dompdf->setPaper('A4', 'landscape');  $dompdf->render();  $dompdf->stream("document.pdf", array("Attachment" => 0));

    <?php require_once('vendor/autoload.php'); use DompdfDompdf; use DompdfOptions; function siteURL() { $protocol = 'http://'; if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'http') { $protocol = 'https://'; } return $protocol . $_SERVER['HTTP_HOST'] . '/'; } $dirImg = __DIR__ . DIRECTORY_SEPARATOR; $dirImg = str_replace('\', '/', $dirImg); define('BASE_PATH', $dirImg); define('BASE_URL', siteURL()); $options = new Options(); $options->set('tempDir', BASE_PATH . "assets/temp"); $options->set('chroot', BASE_PATH); $options->set('isRemoteEnabled', true); $dompdf = new Dompdf($options); $dompdf->loadHtml(' <p>Image by link on any server</p> <p><img src="https://avatars.githubusercontent.com/u/8142648?v=4"></p> <p>Image by link on your server</p> <p><img src="' . BASE_URL . 'assets/images/projectsoft.png"></p> <p>Image showing full path</p> <p><img src="' . BASE_PATH . 'assets/images/projectsoft.png"></p> <p>Image with incomplete path</p> <p><img src="assets/images/projectsoft.png"></p> <p>BASE_URL -> ' . BASE_URL . '</p> <p>BASE_PATH -> ' . BASE_PATH . '</p>'); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); $dompdf->stream("document.pdf", array("Attachment" => 0));

  • Ответ был прост оказывается. Надо было просто включить warnings у dompdf и понять в чем проблема. Оказывается в ядре он ссылается на sys_temp_dir, который по умолчанию не задан. Задав значение, все заработало

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    2
    Стас DB Ответ

    Проблема с отображением картинок в Dompdf может возникать по нескольким причинам. Вот несколько возможных причин и способы их решения:

    1. Путь к изображению неверен: Убедитесь, что путь к изображению указан правильно. Dompdf требует абсолютный путь к изображению, поэтому убедитесь, что путь начинается с корня вашего веб-сайта.

    2. Разрешение изображения: Убедитесь, что изображение имеет поддерживаемый формат (например, JPEG, PNG) и правильное разрешение. Dompdf может иметь проблемы с отображением изображений с высоким разрешением.

    3. Проблемы с сервером: Sometiems проблемы с сервером могут привести к невозможности Dompdf загрузить изображение. Убедитесь, что у вас есть правильные разрешения на файлы изображений и сервер правильно настроен.

    4. Проблемы с настройками Dompdf: Проверьте конфигурационные файлы Dompdf и убедитесь, что правильно настроены параметры для загрузки изображений. Например, убедитесь, что параметр 'isHtml5ParserEnabled' установлен в true.

    Пример кода с использованием Dompdf:

    require_once 'dompdf/autoload.inc.php';
     
    use Dompdf\Dompdf;
    use Dompdf\Options;
     
    $options = new Options();
    $options->set('isHtml5ParserEnabled', true);
     
    $dompdf = new Dompdf($options);
    $html = '<img src="/path/to/image.jpg">';
    $dompdf-&gt;loadHtml($html);
    $dompdf-&gt;render();
    $dompdf-&gt;stream();

    require_once 'dompdf/autoload.inc.php'; use Dompdf\Dompdf; use Dompdf\Options; $options = new Options(); $options-&gt;set('isHtml5ParserEnabled', true); $dompdf = new Dompdf($options); $html = '<img src="/path/to/image.jpg">'; $dompdf-&gt;loadHtml($html); $dompdf-&gt;render(); $dompdf-&gt;stream();

    Если после проверки всех этих причин проблема с отображением изображений в Dompdf все еще остается, попробуйте использовать другие методы загрузки изображений, такие как base64-кодирование изображения прямо в HTML.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно