Foros del Web » Programando para Internet » PHP »

Añadir css externo a DOMPDF

Estas en el tema de Añadir css externo a DOMPDF en el foro de PHP en Foros del Web. Hola a todos, estoy realizando una exportación con DOMPDF de un codigo html que tengo. La exportación me esta funcionando correctamente, sin embargo no está ...
  #1 (permalink)  
Antiguo 17/05/2016, 13:50
Avatar de maiksix  
Fecha de Ingreso: noviembre-2014
Ubicación: Sabadell
Mensajes: 124
Antigüedad: 10 años
Puntos: 1
Añadir css externo a DOMPDF

Hola a todos,

estoy realizando una exportación con DOMPDF de un codigo html que tengo.
La exportación me esta funcionando correctamente, sin embargo no está cogiendo el css externo que si lee al renderizar la vista.

He buscado información y no encuentro referencia alguna a como usar id's y clases en los tags html del código que se crea en el pdf.

He probado poniendo el css directamente en los tags y funciona sin embargo no es lo más optimo además de duplicar código...

Alguien sabe como hacerlo o tiene alguna alternativa?

Gracias.

Un saludo.
__________________
Going hard for too long... Can't get enough
  #2 (permalink)  
Antiguo 17/05/2016, 14:02
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 13 años, 3 meses
Puntos: 13
Respuesta: Añadir css externo a DOMPDF

Hola, podrias mostrar el codigo que tienes ?

Saludos
  #3 (permalink)  
Antiguo 18/05/2016, 13:34
Avatar de maiksix  
Fecha de Ingreso: noviembre-2014
Ubicación: Sabadell
Mensajes: 124
Antigüedad: 10 años
Puntos: 1
Respuesta: Añadir css externo a DOMPDF

Hola kip13,

este es el código:

Código:
    if(isset($_GET['pdf'])){
    $pdf=$_GET['pdf'];
    }
    $query="select * from informeTipo
            where id='".$_GET['id']."'";
    $result = mysql_query($query,$con);
    $query2="select * from cabezerasDocumentos";
    $headers = mysql_query($query2,$con);
    $row = mysql_fetch_array($result);
    $row_headers = mysql_fetch_array($headers);

 if($pdf!=true){
    ?>
<html>
    <head>
    <link href='http://kartingrfeda.com/RFEDA/Imagenes/rfeda.ico' rel='shortcut icon' type='image/x-icon'>
    <title>Documentación oficial - Kartingrfeda.com</title>
    <meta name="Documentación kartingrfeda.com" content="Documentación"></meta>
    <link href="style.css" rel="stylesheet" type="text/css" />
    <meta name="tipo_contenido"  content="text/html;" http-equiv="content-type" charset="utf-8">
    </head>

    <body id="docsbodyinscripcion">
      <?php
        include("menuDocumentos.php");
        ?>
        <div class="tabledivinscripcion">
                <?php
                    
                  echo"<div class='titular-inscripcion'><img id='header' class='headers' src='ImagenesNoticias/".$row_headers['timestamp']."_".$row_headers['header']."'/></div>";
                    echo"<div class='titular-inscripcion'><p class='pdescripcion'> <b>Categoría:</b>".$row['categoria']."</p></div>";                   
                    echo"<div class='titular-inscripcion'><p class='pdescripcion'> <b>INFORME DE:</b>".$row['nombreInforme']."</p>"
                    . "<p class='pdescripcion'> <b>Fecha:</b>".$row['fecha']."</p>"
                    . "<p class='pdescripcion'> <b>Hora:</b>".$row['hora']."</p></div>";                                
                    echo"<div class='titular-inscripcion'><p class='pdescripcion'> <b>Nombre:</b>".$row['nombre']."</p>"
                    . "<p class='pdescripcion'> <b>Licencia:</b>".$row['licencia']."</p>"
                    . "<p class='pdescripcion'> <b>Categoría:</b>".$row['categoria2']."</p>"
                    ."<p class='pdescripcion'> <b>Manga:</b>".$row['manga']."</p>"
                    . "</div>";
                    echo"<div class='titular-inscripcion'><p class='pdescripcion'> <b>Descripción:  Hora del hecho: ".$row['horaHecho']."</b>"
                    . "<br><br>"
                    ."".$row['descripcion'].""        
                    . "</p>"
                    . "</div>";
                    
                    echo"<div class='titular-inscripcion'><img id='footer' class='headers' src='ImagenesNoticias/".$row_headers['timestamp']."_".$row_headers['footer']."'/></div>"; 
                    if($row['publicarTablon']=='1'){
                        echo"<div class='titular-inscripcion'><p class='pdescripcion'>PUBLICAR EN EL TABLÓN OFICIAL DE AVISOS</p><img id='check' src='logos_rfeda/check.png'/></div>";
                    }
                ?>   
        </div>
        <?php
            
        ?>
    </body>
</html>
<?php

 }elseif($pdf==true){
     $query="select * from informeTipo
            where id='".$_GET['id']."'";
    $result = mysql_query($query,$con);
    $query2="select * from cabezerasDocumentos";
    $headers = mysql_query($query2,$con);
     $row = mysql_fetch_array($result);
    $row_headers = mysql_fetch_array($headers);
                $codigoHTML='
                    <div style="width:100%">
                    
                    <div class="titular-inscripcion"><img id="header" style="width:100%" class="headers" src="ImagenesNoticias/'.$row_headers["timestamp"].'_'.$row_headers["header"].'"/>
                    </div>
                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>Categoría:</b>'.$row["categoria"].'</p></div>                   
                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>INFORME DE:</b>'.$row["nombreInforme"].'</p>
                    <p class="pdescripcion"> <b>Fecha:</b>'.$row["fecha"].'</p>
                    <p class="pdescripcion"> <b>Hora:</b>'.$row["hora"].'</p></div> 
                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>Nombre:</b>'.$row["nombre"].'</p>
                    <p class="pdescripcion"> <b>Licencia:</b>'.$row["licencia"].'</p>
                    <p class="pdescripcion"> <b>Categoría:</b>'.$row["categoria2"].'</p>
                    <p class="pdescripcion"> <b>Manga:</b>'.$row["manga"].'</p>
                    </div>
                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>Descripción:  Hora del hecho: '.$row["horaHecho"].'</b>
                    <br><br>
                    '.$row["descripcion"].'
                    <br>  
                    </p>
                    </div>
                    
                    <div class="titular-inscripcion"><img id="footer" class="headers" src="ImagenesNoticias/'.$row_headers["timestamp"].'_'.$row_headers["footer"].'"/></div>
                    </div>
                ';
                if($row['publicarTablon']=='1'){
                        $codigoHTML.='<div class="titular-inscripcion"><p class="pdescripcion">PUBLICAR EN EL TABLÓN OFICIAL DE AVISOS</p><img id="check" src="logos_rfeda/check.png"/></div>';
                    }
require_once("dompdf/dompdf_config.inc.php");
                $dompdf=new DOMPDF();
                $dompdf->set_paper("A4", "portrait");
                $dompdf->load_html($codigoHTML);
               ini_set("memory_limit","128M");
                $dompdf->render();
                $dompdf->stream("Reporte_tabla_usuarios.pdf");
            }
Encontre que con setBasePath podías indicarle el path para el css, pero ni caso...

Y a parte de eso no he encontrado nada más, por eso ya acudí al foro...

Gracias.
__________________
Going hard for too long... Can't get enough
  #4 (permalink)  
Antiguo 19/05/2016, 13:30
Avatar de maiksix  
Fecha de Ingreso: noviembre-2014
Ubicación: Sabadell
Mensajes: 124
Antigüedad: 10 años
Puntos: 1
Respuesta: Añadir css externo a DOMPDF

Alguien ha conseguido añadir los css al pdf sin tener que ponerlo en los tags html? Es decir, referenciandolo de un archivo .css?

Gracias,

saludos
__________________
Going hard for too long... Can't get enough
  #5 (permalink)  
Antiguo 19/05/2016, 14:20
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 13 años, 3 meses
Puntos: 13
Respuesta: Añadir css externo a DOMPDF

Hola, en la variable $codigoHTML segun reviso tu codigo es la que recibes para cargar al archivo PDF verdad?

Si es asi entonces porque no colocas la linea con la referencia al archivo .css?

Código HTML:
Ver original
  1. <link href="style.css" rel="stylesheet" type="text/css"   media="screen"/>

Prueba incluyendola como te lo dejo aca:
Código PHP:
Ver original
  1. $codigoHTML='
  2.    <link href="style.css" rel="stylesheet" type="text/css"   media="screen" />
  3.  
  4.                    <div style="width:100%">
  5.                    
  6.                    <div class="titular-inscripcion"><img id="header" style="width:100%" class="headers" src="ImagenesNoticias/'.$row_headers["timestamp"].'_'.$row_headers["header"].'"/>
  7.                    </div>
  8.                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>Categoría:</b>'.$row["categoria"].'</p></div>                  
  9.                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>INFORME DE:</b>'.$row["nombreInforme"].'</p>
  10.                    <p class="pdescripcion"> <b>Fecha:</b>'.$row["fecha"].'</p>
  11.                    <p class="pdescripcion"> <b>Hora:</b>'.$row["hora"].'</p></div>
  12.                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>Nombre:</b>'.$row["nombre"].'</p>
  13.                    <p class="pdescripcion"> <b>Licencia:</b>'.$row["licencia"].'</p>
  14.                    <p class="pdescripcion"> <b>Categoría:</b>'.$row["categoria2"].'</p>
  15.                    <p class="pdescripcion"> <b>Manga:</b>'.$row["manga"].'</p>
  16.                    </div>
  17.                    <div class="titular-inscripcion"><p class="pdescripcion"> <b>Descripción:  Hora del hecho: '.$row["horaHecho"].'</b>
  18.                    <br><br>
  19.                    '.$row["descripcion"].'
  20.                    <br>  
  21.                    </p>
  22.                    </div>
  23.                    
  24.                    <div class="titular-inscripcion"><img id="footer" class="headers" src="ImagenesNoticias/'.$row_headers["timestamp"].'_'.$row_headers["footer"].'"/></div>
  25.                    </div>
  26.                ';
  27.                 if($row['publicarTablon']=='1'){
  28. $codigoHTML.='<div class="titular-inscripcion"><p class="pdescripcion">PUBLICAR EN EL TABLÓN OFICIAL DE AVISOS</p><img id="check" src="logos_rfeda/check.png"/></div>';

Yo he probado aquello que te menciono y si me carga los estilos, prueba descargandote la ultima version del Doompdf a ver si en ello radica el problema.

Saludos
  #6 (permalink)  
Antiguo 23/05/2016, 05:01
Avatar de maiksix  
Fecha de Ingreso: noviembre-2014
Ubicación: Sabadell
Mensajes: 124
Antigüedad: 10 años
Puntos: 1
Respuesta: Añadir css externo a DOMPDF

Hola kip13,

ya lo he probado y me ha funcionado perfectamente.

Muchas gracias.

Sin embargo veo que al añadir en los divs un display:table, table-row y table-cell, DOMPDF muere y saca un error por pantalla de que no se ha instanciado algo. He probado modificandolo por TR y td y todo funciona bien...

Por curiosidad, alguien sabe a que puede ser debido?

Gracias, un saludo.
__________________
Going hard for too long... Can't get enough

Etiquetas: css, dompdf, externo, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:18.