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

De KumbiaPHP Framework Wiki
Saltar a: navegación, buscar
Línea 6: Línea 6:
 
<source lang="php">
 
<source lang="php">
 
$ composer require mpdf/mpdf
 
$ composer require mpdf/mpdf
 +
</source>
 +
 +
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
 +
 +
<source lang="php">
 +
<?php
 +
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', '', ['budgets' => $budgets, 'items' => $items, 'type' => $type, 'company' => $company]);
 +
        // 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($company->docfooter);
 +
        // Escribe algo de contenido HTML:
 +
        $mpdf->WriteHTML($html);
 +
 +
 +
        // Envia un archivo PDF directamente al navegador
 +
        $mpdf->Output('presupuesto-'.$budgets->number.'.pdf', \Mpdf\Output\Destination::DOWNLOAD);
 +
    }
 +
 +
}
 
</source>
 
</source>

Revisión de 01:51 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 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

<?php 
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', '', ['budgets' => $budgets, 'items' => $items, 'type' => $type, 'company' => $company]);
        // 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($company->docfooter);
        // Escribe algo de contenido HTML:
        $mpdf->WriteHTML($html);
 
 
        // Envia un archivo PDF directamente al navegador
        $mpdf->Output('presupuesto-'.$budgets->number.'.pdf', \Mpdf\Output\Destination::DOWNLOAD);
    }
 
}