Exportar a PDF con cabecera y pie de pagina

De KumbiaPHP Framework Wiki

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 en default/app/models con el nombre que creamos conveniente. Yo lo nombrare reports Hacemos referencia a nuestro autoload.php de la siguiente forma en nuestro modelo

require_once ROOT_PATH . 'vendor/autoload.php';

use Mpdf\Mpdf;

class Reports {

    private static $header_html="";
    private static $footer_html="";

    public static function budgets($budgets, $type) {

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

        //Agrego el header a los documentos
        $mpdf->setAutoTopMargin = 'stretch';
        $mpdf->SetHTMLHeader(self::$header_html);

        //contenido de la vista alojada en el partials
        ob_start();
        View::partial('reports/pdf');
        // 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
        $mpdf->setAutoBottomMargin = 'stretch';
        $mpdf->SetHTMLFooter(self::$footer_html);
        // Escribe algo de contenido HTML:
        $mpdf->WriteHTML($html);


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

}