Edición de «Exportar a PDF con cabecera y pie de pagina»

Saltar a: navegación, buscar

Advertencia: No has iniciado sesión. Tu dirección IP será visible públicamente si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, junto con otros beneficios.

La edición puede deshacerse. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así deshacer la edición.
Revisión actual Tu texto
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 aquí.
Quiero complementar  agregando un encabezado y un pie de página que se repetirá cada vez.<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.
Sin más preámbulo comencemos.<br>
+
Sin más preámbulo comencemos.
Lo primero que haremos es instalar 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.
 
+
<source lang="php">
+
$ composer require mpdf/mpdf
+
</source>
+
 
+
 
+
== Nuestro Controlador ==
+
 
+
Aquí crearemos una nueva vista, la cual será llamada cada vez que deseamos exportar nuestro documento.
+
<source lang="php">
+
class TestController extends AppController {
+
 
+
    public function export() {
+
        //No mostramos template, como tampoco vista.
+
        View::select(null, null);
+
        //llamamos al metodo estatico export de nuestro modelo Pdfreports pasando un titulo y un mensaje
+
        PdfReports::export('Hola Kumbieros!');
+
    }
+
 
+
}
+
</source>
+
 
+
== Las Vistas ==
+
 
+
Ahora crearemos nuestras vistas parciales(partials), que tendrán la estructura de nuestro PDF, creamos el archivo en '''default/app/views/_shared/partials/reports/test/pdf.phtml'''
+
<source lang="html5">
+
<html lang="es">
+
    <head>
+
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+
        <title>PDF de Prueba</title>
+
        <!-- Hacemos referencia a boostrap para dar algunos estilos a nuestro diseño-->
+
        <link href="<?php echo PUBLIC_APP ?>css/bootstrap/bootstrap.min.css" rel="stylesheet">
+
    </head>
+
    <body>
+
        <div class="text-center">
+
            <!-- Mostramos nuestro titulo a través de la variable $titulo-->
+
            <h3><?php echo $titulo ?></h3>
+
        </div>
+
        <br><br><br>
+
        <div class="container-fluid text-justify">
+
            <!-- Agregamos gran cantidad de texto para ver la repetición del encabezado y pie de pagina.-->
+
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sapien velit, aliquet eget....
+
        </div>
+
    </body>
+
</html>
+
</source>
+
 
+
Del mismo modo creamos el partial para el encabezado y pie de pagina
+
'''default/app/views/_shared/partials/reports/test/header.phtml'''
+
<source lang="html5">
+
<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>
+
</source>
+
 
+
'''default/app/views/_shared/partials/reports/test/footer.phtml'''
+
<source lang="html5">
+
    <div>KumbiaPHP es un framework para aplicaciones web libre escrito en PHP.</div>
+
</source>
+
 
+
== Modelo ==
+
 
+
Ahora crearemos nuestro modelo pdf_reports.php en '''default/app/models.'''<br>
+
 
+
<source lang="php">
+
 
+
use Mpdf\Mpdf;
+
 
+
class PdfReports {
+
 
+
    public static function getHeaderHtml() {
+
        //contenido del header alojada en el partials
+
        ob_start();
+
        View::partial('reports/test/header');
+
        // Obtiene el html del búfer actual y elimina el búfer de salida actual
+
        return ob_get_clean();
+
    }
+
 
+
    public static function getFooterHtml() {
+
        //contenido del footer alojada en el partials
+
        ob_start();
+
        View::partial('reports/test/footer');
+
        // Obtiene el html del búfer actual y elimina el búfer de salida actual
+
        return ob_get_clean();
+
    }
+
 
+
    public static function export($titulo) {
+
 
+
        // 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::getHeaderHtml());
+
 
+
        //contenido de la vista alojada en el partials
+
        ob_start();
+
        View::partial('reports/test/pdf', false, array('titulo' => $titulo));
+
        // 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::getFooterHtml());
+
 
+
        // Agrego el contenido del Partials al HTML
+
        $mpdf->WriteHTML($html);
+
 
+
        // Envia un archivo PDF al navegador
+
        $mpdf->Output('mipdf.pdf', \Mpdf\Output\Destination::DOWNLOAD);
+
    }
+
 
+
}
+
</source>
+
 
+
== Resultado ==
+
 
+
Ahora abrimos nuestro navegador  ingresando a nuestra url '''http://localhost/tuweb/test/export'''
+
Y se descargara nuestro PDF, el cual repite su encabezado y pie de página por cada hoja.
+
[[Archivo:Exportar-pdf1.jpg]]
+
<br>
+
[[Archivo:Exportar-pdf2.jpg]]
+
 
+
--[[Usuario:Ekogro|Ekogro]]  19:24 14 ago 2018 (UTC)
+
[[Categoría:Tutoriales KumbiaPHP]]
+

Por favor observa que todas las contribuciones a KumbiaPHP Framework Wiki se consideran hechas públicas bajo la Attribution-Share Alike 3.0 Unported (véase KumbiaPHP Framework Wiki:Derechos de autor para más detalles). Si no deseas la modificación y distribución libre de tu obra, entonces no la pongas aquí.
También nos aseguras que tú escribiste esto y te pertenecen de los derechos de autor, o lo copiaste desde el dominio público u otra fuente libre. ¡No uses escritos con copyright sin permiso!

Cancelar | Ayuda de edición (se abre en una ventana nueva)