Dompdf не отображает картинки, почему?
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
Дополнительно:
Пути к файлам посмотри
удаленная ссылка
удаленная ссылка на сам проект
удаленная ссылка с фронта (фронт на вью)
через public_path в ларе
через указание полного пути /var/www и так далее
Не знаю, как у вас...
<?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, который по умолчанию не задан. Задав значение, все заработало
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема с отображением картинок в 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->loadHtml($html); $dompdf->render(); $dompdf->stream();
Если после проверки всех этих причин проблема с отображением изображений в Dompdf все еще остается, попробуйте использовать другие методы загрузки изображений, такие как base64-кодирование изображения прямо в HTML.