No post anterior, falei sobre a biblioteca mPDF, para geração de arquivos PDF.

Hoje, apresento uma forma de integrar essa biblioteca no framework CodeIgniter.

Download mPDF:  http://mpdf.bpm1.com/

Download CodeIgniter: http://codeigniter.com/

Dê um nome qualquer a pasta do mPDF, vou considerar daqui pra frente como “mpdf_lib“.

Coloque a pasta mpdf_lib dentro do CodeIgniter, na pasta “system/plugins

Ficaremos então com a seguinte estrutura:

Estrutura do CodeIngiter + mPDF

Feito isso, vamos criar o plugin que será invocado para gerar os pdfs:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
function pdf($html, $filename=null)
{
    require_once("mpdf_lib/mpdf.php");
 
    $mpdf = new mPDF();
 
    //$mpdf->allow_charset_conversion=true;
    //$mpdf->charset_in='iso-8859-1';
 
    //Exibir a pagina inteira no browser
    //$mpdf->SetDisplayMode('fullpage');
 
    //Cabeçalho: Seta a data/hora completa de quando o PDF foi gerado + um texto no lado direito
    //$mpdf->SetHeader('{DATE j/m/Y H:i}|{PAGENO}/{nb}|Texto no cabeçalho');
 
    //Rodapé: Seta a data/hora completa de quando o PDF foi gerado + um texto no lado direito
    //$mpdf->SetFooter('{DATE j/m/Y H:i}|{PAGENO}/{nb}|Texto no rodapé');
 
    $mpdf->WriteHTML($html);
 
    // define um nome para o arquivo PDF
    if($filename == null){
        $filename = date("Y-m-d_his").'_impressao.pdf';
    }
 
    $mpdf->Output($filename, 'I');
}
 
/* End of file mpdf_pdf_pi.php */
/* Location: ./system/plugins/mpdf_pi.php */

Salve esse código na pasta “system/plugins” como o nome “mpdf_pi.php“.

PS: As linhas comentadas não são obrigatórias, mas são apenas um exemplo de coisas que já podem ser setadas por default, quando gerar o PDF, para mais opções, recomendo consultar a documentaçao do mPDF.

Para utilizar o plugin nos controllers/views… basta chamar dessa maneira:

$this->load->plugin('mpdf');
 
$html = "<html>";
$html .= "<head></head>";
$html .= "<body>Meu arquivo de teste</body>";
$html .= "</html>";
 
// Opcional: Também é possivel carregar uma view inteira...
//$html = $this->load->view('uma_view_qualquer', null, true);
 
pdf($html);

Para que não seja necessário fazer “load” do plugin toda vez que precisar utilizá-lo, basta configurar para que ele seja carregado automaticamente pelo codeigniter. Para isso, abra o arquivo “/system/application/config/autoload.php“, e troque a linha…

$autoload['plugin'] = array();

…Por…

$autoload['plugin'] = array("mpdf");

Espero ter ajudado.

Qualquer dúvida, podem perguntar nos comentários que respondo assim que possível.

Abraço!