Diferencia entre revisiones de «Exportar a PDF con cabecera y pie de pagina»

De KumbiaPHP Framework Wiki
Línea 1: Línea 1:
 
Esta es una contribución inspirada en el excelente tutorial de Henrystivens, que puedes encontrar [https://www.kumbiaphp.com/blog/2018/08/06/crear-pdf-usando-html/#more-1915 Aquí].<br>
 
Esta es una contribución inspirada en el excelente tutorial de Henrystivens, que puedes encontrar [https://www.kumbiaphp.com/blog/2018/08/06/crear-pdf-usando-html/#more-1915 Aquí].<br>
Quiero complementar  agregando un encabezado y un pie de página que se repetirá cada vez que se generen más de una página en el documento.
+
Quiero complementar  agregando un encabezado y un pie de página que se repetirá cada vez que se generen más de una página en el documento.<br>
 
Sin más preámbulo comencemos.<br>
 
Sin más preámbulo comencemos.<br>
 
Lo primero que haremos es cargar la librería MPDF a través de composer.<br>
 
Lo primero que haremos es cargar la librería MPDF a través de composer.<br>
Línea 8: Línea 8:
 
</source>
 
</source>
  
Ahora crearemos nuestro modelo en default/app/models con el nombre que creamos conveniente. Yo lo nombrare reports
+
Ahora crearemos nuestro modelo pdfreports.php en default/app/models.<br>
 
Hacemos referencia a nuestro autoload.php de la siguiente forma en nuestro modelo
 
Hacemos referencia a nuestro autoload.php de la siguiente forma en nuestro modelo
  
Línea 17: Línea 17:
 
use Mpdf\Mpdf;
 
use Mpdf\Mpdf;
  
class Reports {
+
class Pdfreports {
  
     private static $header_html="";
+
     private static $header_html = '
     private static $footer_html="";
+
        <table width="100%">
 +
        <tr>
 +
            <td width="50%" align="left"><img src="http://wiki.kumbiaphp.com/images/wikibanner.png"></td>
 +
            <td width="50%" align="right">Tutorial Encabezados y pie de Pagína</td>
 +
        </tr>
 +
</table><hr>
 +
    ';
 +
     private static $footer_html = "KumbiaPHP es un framework para aplicaciones web libre escrito en PHP.";
  
     public static function budgets($budgets, $type) {
+
     public static function export($nombre, $mensaje) {
  
 
         // Se crea la instancia de la Clase y directorio temporal
 
         // Se crea la instancia de la Clase y directorio temporal
 
         $mpdf = new Mpdf(['tempDir' => APP_PATH . '/temp']);
 
         $mpdf = new Mpdf(['tempDir' => APP_PATH . '/temp']);
  
         //Agrego el header a los documentos
+
         //Establezco setAutMargin en stretch para establecer una distancia minima que se expande conforme al alto del encabezado
 
         $mpdf->setAutoTopMargin = 'stretch';
 
         $mpdf->setAutoTopMargin = 'stretch';
 +
        //establezco el HTML al header
 
         $mpdf->SetHTMLHeader(self::$header_html);
 
         $mpdf->SetHTMLHeader(self::$header_html);
  
 
         //contenido de la vista alojada en el partials
 
         //contenido de la vista alojada en el partials
 
         ob_start();
 
         ob_start();
         View::partial('reports/pdf');
+
         View::partial('reports/test/pdf', false, array('nombre' => $nombre, 'mensaje' => $mensaje));
 
         // Obtiene en $html el contenido del búfer actual y elimina el búfer de salida actual
 
         // Obtiene en $html el contenido del búfer actual y elimina el búfer de salida actual
 
         $html = ob_get_clean();
 
         $html = ob_get_clean();
  
         //agrego el footer de pagina
+
         //agrego el footer de pagina y esta
 
         $mpdf->setAutoBottomMargin = 'stretch';
 
         $mpdf->setAutoBottomMargin = 'stretch';
 
         $mpdf->SetHTMLFooter(self::$footer_html);
 
         $mpdf->SetHTMLFooter(self::$footer_html);
         // Escribe algo de contenido HTML:
+
 
 +
         // Agrego el contenido del Partials al HTML
 
         $mpdf->WriteHTML($html);
 
         $mpdf->WriteHTML($html);
  
 
+
         // Envia un archivo PDF al navegador
         // Envia un archivo PDF directamente al navegador
 
 
         $mpdf->Output('mipdf.pdf', \Mpdf\Output\Destination::DOWNLOAD);
 
         $mpdf->Output('mipdf.pdf', \Mpdf\Output\Destination::DOWNLOAD);
 
     }
 
     }

Revisión del 18:35 14 ago 2018

Esta es una contribución inspirada en el excelente tutorial de Henrystivens, que puedes encontrar Aquí.
Quiero complementar agregando un encabezado y un pie de página que se repetirá cada vez que se generen más de una página en el documento.
Sin más preámbulo comencemos.
Lo primero que haremos es cargar la librería MPDF a través de composer.

$ composer require mpdf/mpdf

Ahora crearemos nuestro modelo pdfreports.php en default/app/models.
Hacemos referencia a nuestro autoload.php de la siguiente forma en nuestro modelo

require_once ROOT_PATH . 'vendor/autoload.php';

use Mpdf\Mpdf;

class Pdfreports {

    private static $header_html = '
        <table width="100%">
        <tr>
            <td width="50%" align="left"><img src="http://wiki.kumbiaphp.com/images/wikibanner.png"></td>
            <td width="50%" align="right">Tutorial Encabezados y pie de Pagína</td>
        </tr>
</table><hr>
    ';
    private static $footer_html = "KumbiaPHP es un framework para aplicaciones web libre escrito en PHP.";

    public static function export($nombre, $mensaje) {

        // Se crea la instancia de la Clase y directorio temporal
        $mpdf = new Mpdf(['tempDir' => APP_PATH . '/temp']);

        //Establezco setAutMargin en stretch para establecer una distancia minima que se expande conforme al alto del encabezado 
        $mpdf->setAutoTopMargin = 'stretch';
        //establezco el HTML al header
        $mpdf->SetHTMLHeader(self::$header_html);

        //contenido de la vista alojada en el partials
        ob_start();
        View::partial('reports/test/pdf', false, array('nombre' => $nombre, 'mensaje' => $mensaje));
        // Obtiene en $html el contenido del búfer actual y elimina el búfer de salida actual
        $html = ob_get_clean();

        //agrego el footer de pagina y esta
        $mpdf->setAutoBottomMargin = 'stretch';
        $mpdf->SetHTMLFooter(self::$footer_html);

        // Agrego el contenido del Partials al HTML
        $mpdf->WriteHTML($html);

        // Envia un archivo PDF al navegador
        $mpdf->Output('mipdf.pdf', \Mpdf\Output\Destination::DOWNLOAD);
    }

}