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

De KumbiaPHP Framework Wiki
Saltar a: navegación, buscar
Línea 12: Línea 12:
  
 
<source lang="php">
 
<source lang="php">
<?php
+
 
 
require_once ROOT_PATH . 'vendor/autoload.php';
 
require_once ROOT_PATH . 'vendor/autoload.php';
  
Línea 33: Línea 33:
 
         //contenido de la vista alojada en el partials
 
         //contenido de la vista alojada en el partials
 
         ob_start();
 
         ob_start();
         View::partial('reports/pdf', '', ['budgets' => $budgets, 'items' => $items, 'type' => $type, 'company' => $company]);
+
         View::partial('reports/pdf');
 
         // 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();
Línea 39: Línea 39:
 
         //agrego el footer de pagina
 
         //agrego el footer de pagina
 
         $mpdf->setAutoBottomMargin = 'stretch';
 
         $mpdf->setAutoBottomMargin = 'stretch';
         $mpdf->SetHTMLFooter($company->docfooter);
+
         $mpdf->SetHTMLFooter(self::$footer_html);
 
         // Escribe algo de contenido HTML:
 
         // Escribe algo de contenido HTML:
 
         $mpdf->WriteHTML($html);
 
         $mpdf->WriteHTML($html);
Línea 45: Línea 45:
  
 
         // Envia un archivo PDF directamente al navegador
 
         // Envia un archivo PDF directamente al navegador
         $mpdf->Output('presupuesto-'.$budgets->number.'.pdf', \Mpdf\Output\Destination::DOWNLOAD);
+
         $mpdf->Output('mipdf.pdf', \Mpdf\Output\Destination::DOWNLOAD);
 
     }
 
     }
  
 
}
 
}
 
</source>
 
</source>

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

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);
    }
 
}