Удаленное изображение Dompdf не отображается в pdf

На моем сервере pdf, созданный с помощью dompdf, не показывал изображения. Потому что это удаленные URL-адреса (локальные изображения работают нормально) то я узнаю, что для визуализации удаленных изображений необходимы некоторые настройки.

allow_url_fopen = true => i can not as server control is not in my hand.(and no one will suggest to do this due to security reasons)
read/write access to the DOMPDF_TEMP_DIR (already have this)
DOMPDF_ENABLE_REMOTE = true (already have this)

Поэтому, конечно, проблема allow_url_fopen, я устанавливаю false в своем локальном хосте, который теперь дает тот же результат, что и сервер.

Итак, теперь проблема заключается в том, что я хочу отображать удаленные изображения в формате PDF с помощью allow_url_fopen = false

  • Я попробовал почти 5-10 уникальных способов сделать это.
  • Я попытался отобразить изображение в php файле (через заголовки настроек), а затем отображение ссылки php в pdf
  • Я попытался отобразить изображение через абсолютный путь к php тоже, но ничего работал.
  • Я попытался получить изображение через curl в функции, а затем отобразить это в php файле... но не повезло.

Есть ли кто-нибудь, кто может предложить мне, как я могу отображать изображение в формате pdf, пожалуйста. Ошибка, которую я всегда получаю,...

Image not found
http://localhost/dompdf/image.php

и

Image not found
http://localhost/dompdf/image.jpg

Ответ 1

У меня была та же проблема, Изображение dompdf не найдено на реальном сервере

Я нашел свое решение, вам просто нужно дважды проверить путь к изображению,

Учитывая ваш путь к изображению в реальном времени

<img src="http://www.example.com/public/images/thumb.png">

Вам просто нужно изменить его,

<img src="public/images/thumb.png">

Примечание. Убедитесь, что все настройки такие же, как вы уже сделали.

Надеюсь, это поможет вам.

Ответ 2

Try

$options = new Options();
$options->set('isRemoteEnabled', true);
$dompdf = new Dompdf($options);

Ответ 3

Есть две вещи, о которых нужно позаботиться.

  1. Если используется изображение с того же сервера, используйте полный путь к каталогу, например, /var/www/html/project_folder/images/logo.jpg

  2. Элемент списка Используйте изображение JPEG вместо png или других типов.

Ответ 4

Я думаю, вы могли бы добавить это

private function change_url_image($data, $url) {    
    $str = $url; //for example "http://localhost/yoursite/";
    $str2 = str_replace($str, "", $data);
    return $str2;
}

изменить URL-адрес для изображения

Ответ 5

Можете ли вы найти эти URL-адреса в своем браузере на компьютере, который вы используете, чтобы открыть PDF файл? Если нет, читатель PDF также не сможет.

Я подозреваю, что домен "localhost" означает, что эти URL-адреса видны только с веб-сервера, который сгенерировал PDF файл. Вам нужно вывести url как http://example.com/dompdf/image.jpg

(Чтобы обойти эту проблему, имейте в виду, что есть веские причины не использовать удаленные изображения. Документ будет выглядеть плохо, если зритель не подключен к Интернету, например. Можно ли просто вставлять изображения непосредственно в документе?)

Ответ 6

dompdf в настоящее время не имеет механизма для разграничения между локальным и удаленным доменами, поэтому любой URL-адрес, начинающийся с http://..., рассматривается как удаленный. Кроме того, любое изображение, использующее посредника на основе PHP (например, pic.php), не может использовать локальный путь, потому что PHP не будет анализироваться, если вы не перейдете через веб-сервер.

Это сложная перспектива, но ваши страницы генерируются динамически. Поэтому я вижу два варианта:

  • загрузка удаленных изображений и их привязка к локальной файловой системе
  • загрузка удаленных изображений и использование URI данных.

Поскольку вы уже разработали изображение с помощью curl, вы сможете реализовать любой из них.

Ответ 7

Та же проблема, с которой я столкнулся, когда был установлен "DOMPDF_ENABLE_REMOTE = > true" в "dompdf/dompdf_config.inc", но не работал.

Одна вещь работала для меня измените src на изображения /css от до относительного и все сделано. В этом случае у меня есть все css/images на моем сервере.

Ответ 8

На случай, если у кого-то возникнут те же проблемы, что и у меня:

  • Я изменил src= "https://" на src= "http://", и изображения загрузились нормально.

  • Я также добавил все встроенные CSS в <style> вместо загрузки через <link>

  • и убедитесь, что CSS <style> находится в <head>, а не в <body>

Ответ 9

Я использовал эту строку кода

<img src="{{ url('/frontened/images/jeevan-green-logo.png') }}" >

Работает нормально. Благодарю.

Ответ 10

Я даю вам пример с функцией

  $html = $this->output->get_output();
        $this->load->library('pdf');
        $this->dompdf->loadHtml($html);
        $this->dompdf->set_option('isRemoteEnabled', true);
        $this->dompdf->setPaper('A4', 'portrait');
        $this->dompdf->render();
        $this->dompdf->stream("studentidcard.pdf", array("Attachment"=>0));

Установите для isremoteenabled значение true, чтобы показывать удаленные изображения.

Ответ 11

У меня возникла та же проблема после того, как многие R & D наконец-то получили решения. Сначала вам нужно получить параметры dompdf, а затем установить isRemoteEnabled в true.

    $options = $dompdf->getOptions(); 
    $options->set(array('isRemoteEnabled' => true));
    $dompdf->setOptions($options);

Ответ 12

Перейдите в файл dompdf_config.inc.php и установите для переменной DOMPDF_ENABLE_REMOTE значение TRUE...