Tema: Crear pdf
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/03/2022, 12:24
sergiodueso
 
Fecha de Ingreso: enero-2011
Ubicación: Zaragoza
Mensajes: 98
Antigüedad: 13 años, 10 meses
Puntos: 1
Crear pdf

Buenas tardes. El otro día os escribí para preguntaros sobre la librería fpdf.php para crear pdfs. Visto que no hay respuesta, hoy os pregunto por otra librería que estoy usando, Dompdf. Si los registros no son muy largos, lo hace perfecto, pero tengo el problema que si el registro es demasiado largo (que es casi siempre), no me lo corta en la misma página y sigue en la siguiente sino que me corta todo el registro y me deja parte de la hoja anterior en blanco con la cabecera de la tabla sólo. ¿Hay alguna forma de hacer que se corte el texto? Gracias. Os pongo el código.
Código PHP:
Ver original
  1. <?php
  2.  
  3. use Mpdf\Mpdf;
  4.  
  5. if (session_status() == PHP_SESSION_NONE) {
  6.     session_start();
  7. }
  8.  
  9. if(isset($_GET['id_pre'])){
  10.     // conectare la base de datos
  11.     include "../clases/conexion.php";
  12.     //require "scripts.php";
  13.     if($_SESSION['conectar'] == "conectar"){
  14.            $obj= new conectar();
  15.            $conexion = $obj->conexion();
  16.         }else{
  17.            $obj= new conectar();
  18.            $conexion = $obj->conexion_1();
  19.         }
  20. }
  21. //Necesitamos recuperar los datos del presupuesto
  22. $id_pre = $_GET['id_pre'];
  23. $sql_pre = "SELECT * FROM presupuestos WHERE id_presupuesto = '".$id_pre."'";
  24. $result_pre = mysqli_query($conexion, $sql_pre);
  25. $fila_pre = mysqli_fetch_assoc($result_pre);
  26.  
  27. //Necesitamos los datos del cliente
  28. $sql_cli = "SELECT * FROM clientes WHERE id_cliente = '".$fila_pre['id_cliente_pre']."'";
  29.  
  30. $result_cli = mysqli_query($conexion, $sql_cli);
  31. $fila_cli = mysqli_fetch_assoc($result_cli);
  32.  
  33. //También los datos de la empresa
  34.  
  35. $sql_empresa = "SELECT * FROM empresa";
  36. $resul_empresa = mysqli_query($conexion, $sql_empresa);
  37. $fila_empresa = mysqli_fetch_assoc($resul_empresa);
  38. $ruta_logo ="../img/";
  39.  
  40. ?>
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es">
  3.     <meta charset="UTF-8">
  4.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <!--<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css">-->
  7.     <title>Imprimir presupuesto</title>q
  8.     <style>
  9.       Aquí va el archivo bootstrap.min.css para los estilos
  10.    </style>
  11. </head>
  12.     <!-- Comenzamos diseñando el prespuesto -->
  13.     <div class="container-fluid" style="font-size: 12px;">
  14.    
  15.         <div class="row">
  16.             <img style="width: 270px; height: 120px;" src="<?php echo $ruta_logo.$fila_empresa['logo'];?>">
  17.         </div>
  18.             <div class="row mr-4">
  19.                 <div class="col-sm-12" style="margin-left: 0px !important;">
  20.                     <table  class="table mt-3" style="border-style: solid;">
  21.                         <tr>
  22.                             <td>
  23.                                 <span><?php echo $fila_empresa['nombre'];?></span>
  24.                                 <br>
  25.                                 <span>Cif: <?php echo $fila_empresa['cif'];?></span>
  26.                                 <br>
  27.                                 <span><?php echo $fila_empresa['direccion'];?></span>
  28.                                 <br>
  29.                                 <span><?php echo $fila_empresa['tel'];?></span>
  30.                                 <br>
  31.                                 <span><?php echo $fila_empresa['email'];?></span>
  32.                             </td>
  33.                             <td class="text-right">
  34.                                 <span><?php echo $fila_cli['nombre'];?></span>
  35.                                 <br>
  36.                                 <span><?php echo $fila_cli['direccion'];?></span>
  37.                                 <br>
  38.                                 <span><?php echo $fila_cli['telefono'];?></span>
  39.                             </td>
  40.                         </tr>
  41.                     </table>
  42.                 </div>
  43.             </div>
  44.         </div>
  45.        
  46.         <!-- Aquí va el número de presupuesto y la fecha -->
  47.         <div class="row ml-3 mr-5">
  48.             <div class="col-sm-6" style="border-style: solid; text-align:center;">
  49.                 <span>Número presupuesto: <span class="font-weight-bold"><?php echo $fila_pre['numero_presupuesto'];?></span></span>
  50.                 <br>
  51.                 <span>Fecha Presupuesto: <span class="font-weight-bold"><?php echo $fila_pre['fecha_presupuesto'];?></span></span>
  52.             </div>
  53.         </div>
  54.         <!-- Aquí va la tabla con los detalles de presupuesto -->
  55.        
  56.         <!-- Aquí la tabla vieja -->
  57.         <table class="table table-bordered mt-3 ml-0" style="font-size: 12px; width:100% !important;">
  58.                 <!--<thead style="background-color: blue; color: white; font-weight: bold; border-style: solid;">-->
  59.                    <tr style="background-color: blue; color: white; font-weight: bold; border-style: solid;">
  60.                         <th class="col-md-6">Descripción</th>
  61.                         <th>Cantidad</th>
  62.                         <th>Precio</th>
  63.                         <th>Subtotal</th>
  64.                     </tr>
  65.                 <!--</thead>-->
  66.                 <tbody>
  67.                     <?php
  68.                        $sql_detalles = "SELECT * FROM detalles_presupuesto WHERE id_presupuesto = '".$fila_pre['id_presupuesto']."'";
  69.                        $resul_detalles = mysqli_query($conexion, $sql_detalles);
  70.                        while($fila_detalle = mysqli_fetch_assoc($resul_detalles)){
  71.                            ?>
  72.                             <tr style="font-size: 12px; border-style:solid;">
  73.                                 <td><?php echo $fila_detalle['descripcion'];?></td>
  74.                                 <td class="text-center"><?php echo $fila_detalle['cantidad'];?></td>
  75.                                 <td><?php echo number_format($fila_detalle['precio'], 2, ',', '.').'€'?></td>
  76.                                 <td><?php echo number_format($fila_detalle['subtotal'], 2, ',', '.').'€'?></td>
  77.                             </tr>
  78.                         <?php    
  79.                        }
  80.                    ?>
  81.                 </tbody>
  82.             </table>
  83.            
  84.         <!-- Aquí los totales -->
  85.        
  86.         <div class="row" style="margin-right: 33px;">
  87.             <div class="col-sm-4 offset-8" style="font-size: 14px; font-weight: bold; border-style:solid;">
  88.                 <span>Total Presupuesto: <span style="color:red;"><?php echo number_format($fila_pre['total_presupuesto'], 2,',', '.').'€';?></span></span>
  89.                 <br>
  90.                 <span>Iva: </span><span style="color:red;"><?php echo $fila_pre['iva'].'%';?></span>
  91.                 <br>
  92.                 <span>Total Iva: </span><span style="color:red;"><?php echo number_format($fila_pre['total_iva'], 2,',', '.').'€';?></span>
  93.                 <br>
  94.                 <span>Total Con Iva: </span><span style="color:red;"><?php echo number_format($fila_pre['total_con_iva'], 2,',', '.').'€';?></span>
  95.             </div>
  96.         </div>
  97.     </div>
  98.    
  99. </body>
  100. </html>
Código PHP:
Ver original
  1. <?php
  2.     $html = ob_get_clean();
  3.     //echo $html;
  4.     require_once "../dompdf/autoload.inc.php";
  5.    
  6.     use Dompdf\Dompdf;
  7.    
  8.     $dompdf = new dompdf();
  9.     $options = $dompdf->getOptions();
  10.     $options->set(array('isRemoteEnabled' => true));
  11.     $dompdf->setOptions($options);
  12.     $dompdf->loadhtml($html);
  13.     $dompdf->setPaper('A4', "portrait");
  14.     $dompdf->render();
  15.     $dompdf->stream("sergio.pdf", array("Attachment" => false));
  16.  
  17. ?>