La imagen remota de Dompdf no se muestra en pdf

4 minutos de lectura

En mi servidor, el pdf generado a través de dompdf no mostraba imágenes. Debido a que son imágenes de URL remotas (las imágenes locales funcionan bien), entonces me doy cuenta de que necesita algunas configuraciones para representar imágenes remotas.

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)

Entonces, para asegurar el problema de allow_url_fopen, configuré falso en mi servidor local, que ahora está dando el mismo resultado que el servidor.

Entonces, ahora el problema es que ahora quiero mostrar imágenes remotas en PDF con allow_url_fopen = false

  • Probé casi 5-10 formas únicas de hacer esto.
  • Intenté mostrar la imagen en el archivo php (mediante la configuración de encabezados) y luego mostrar el enlace php en pdf
  • Traté de mostrar la imagen a través de la ruta absoluta a php también, pero nada funcionó.
  • Intenté obtener una imagen a través de curl en una función y luego mostrarla en un archivo php … pero no tuve suerte.

¿Hay alguien que pueda sugerirme cómo puedo mostrar la imagen en pdf, por favor? El error que siempre me sale es…

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

y

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

  • encontraste alguna solucion? tengo el mismo problema, las imágenes aparecen bien en localhost, pero no en el servidor en vivo, la ruta está bien, la imagen ya está en el servidor.

    – Irfan Ahmed

    1 de abril de 2014 a las 6:02

  • no. aun no lo encontre.

    – TechCare99

    12 de abril de 2014 a las 5:14

Probar

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

  • Tuve que usar la clase Opciones también, así: use Dompdf\Options;

    – Gavin

    11 de agosto de 2017 a las 0:41


  • En mi caso, $dompdf = new DOMPDF(); $dompdf->set_option('isRemoteEnabled', TRUE); fue suficiente (es decir, no se necesita una inicialización de clase adicional)

    – mehov

    22 de mayo de 2018 a las 8:07

  • set_option() es obsoleto

    – Alex

    2 de enero de 2019 a las 15:20

  • Sé que es tarde ahora, pero lo probé y no funciona para mí en Yii2

    – Desarrollador curioso

    25 de marzo de 2019 a las 11:14

  • @aexl … realmente no necesitamos otras líneas. pulgares arriba para ti. Gracias

    – Vivek

    3 de mayo de 2019 a las 6:35

avatar de usuario
irfan ahmed

Tuve el mismo problema, la imagen dompdf no se encontró en el servidor en vivo

Encontré su solución, solo necesita verificar dos veces la ruta de la imagen,

Teniendo en cuenta la ruta de la imagen del servidor en vivo

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

Sólo tienes que cambiarlo a,

<img src="https://stackoverflow.com/questions/15153139/public/images/thumb.png">

Nota: asegúrese de que todas las configuraciones sean las mismas que ya ha realizado.

Espero que esto ayude.

  • +1 estaba buscando el problema desde media hora y este realmente ayudó.

    – Karan Thakkar

    17 de julio de 2014 a las 12:26

  • @irfan Ahmed Gracias por tu solución

    – Mukhila Asokan

    15 de septiembre de 2015 a las 12:39

  • Obtención de problemas si el nombre de la imagen tiene espacio.

    –Rajesh Vishwakarma

    28 de agosto de 2018 a las 10:08


  • Gracias. Esto me ayudó. Por cierto, tuve que eliminar público. “La imagen remota de Dompdf no se muestra en pdf ” Espero que esto ayude a otros.

    –Manuja Jayawardana

    8 jun 2019 a las 18:30

avatar de usuario
daudichya

Hay dos cosas que cuidar.

  1. Si usa una imagen del mismo servidor, use la ruta completa del directorio, por ejemplo
    /var/www/html/project_folder/images/logo.jpg

  2. Elemento de la lista Uso JPEG imagen en lugar de png u otros tipos.

avatar de usuario
Soubhagya Kumar Barik

Tuve el mismo problema después de hacer mucha investigación y desarrollo, finalmente obtuve la solución. Primero, debe obtener las opciones de dompdf y luego configurar isRemoteEnabled con verdad

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

avatar de usuario
Chandan Bisht

Tuve el mismo problema con las imágenes, y mi solución fue:

getcwd().'path/to/image'

¡Esto funciona para mi!

avatar de usuario
Saumya Prakash Mishra

Ir
dompdf/vendor/dompdf/dompdf/src/ y abierto Options.php expediente.

Buscar y cambiar private $isRemoteEnabled = false; a private $isRemoteEnabled = true;

avatar de usuario
Esteban Schwink

¿Puede llegar a esas URL en su navegador web en la máquina que está usando para abrir el PDF? Si no, el lector de PDF tampoco podrá hacerlo.

Sospecho que el dominio “localhost” significa que esas URL solo son visibles desde el servidor web que generó el PDF. Necesita generar una URL como http://ejemplo.com/dompdf/imagen.jpg

(Para evitar este problema, tenga en cuenta que hay buenas razones para no usar imágenes remotas. El documento se verá mal si el visor no está conectado a Internet, por ejemplo. ¿Es posible simplemente incrustar las imágenes directamente en el ¿documento?)

  • Aquí el usuario está viendo mi sitio y generando pdf dinámicamente y, por ejemplo, estoy mostrando su foto de perfil en pdf. (profilepic está en el servidor cdn) Así que puedo dar un enlace como cdnserver.com/user/12.jpg u otra forma es myserver.com/user_profiles/pic.php?id=12 ambas formas no funcionan y el usuario tiene acceso a Internet

    – TechCare99

    1 de marzo de 2013 a las 9:20

¿Ha sido útil esta solución?