quarta-feira, 2 de abril de 2014

Instalando o TCPDF no CakePHP 2.4

Existe várias formas de gerar arquivos PDF no PHP, uma delas é através do TCPDF. Neste artigo vou explicar como instalar o TCPDF no CakePHP 2.4. Como exemplo, vamos partir da instalação do Cake explicado em  Utilizando o CakePHP no Eclipse.

Após a instalação do Cake 2.4.6, estamos então com esta página:
CakePHP Instalado

O TCPDF pode ser baixado em http://sourceforge.net/projects/tcpdf/files/, a versão que está sendo usada neste artigo é a 6.0.062.
Depois do download, descompactamos o arquivo e copiamos a pasta tcpdf para app/Vendor em nosso aplicativo.
app/Vendor/tcpdf

Para que os navegadores reconheçam que o arquivo gerado deva ser tratado como um PDF, escolhendo o tipo de aplicação correto,  vamos criar um layout em app/View/Layouts/pdf.ctp.
Página pdf.ctp

Para este teste vamos criar um arquivo em app/Controller chamado EtiquetasController.php e criar dois métodos:
EtiquetasController

Agora as views para os métodos em app/View/Etiquetas
app/View/Etiquetas

Em index.ctp, só precisamos de um link para a página viewPdf.

Bom, agora vamos criar nosso PDF. 
No método viewPdf() temos que indicar o layout e chamar a renderização da página.

  public function viewPdf() {
    $this->layout = 'pdf';
   $this->render();
 }       
 

E na view, carregamos o TCPDF e montamos o arquivo:
<?php 
App::import('Vendor','tcpdf/tcpdf'); 

//carrega o construtor do pdf
$Pdf = new TCPDF();

$Pdf->setPrintHeader(false);

$Pdf->setPrintFooter(false);

$Pdf->SetMargins(10, 20, 0);

$Pdf->AddPage('P','A4');

$html = '
 <h1> PDF gerado pelo TCPDF</h1>
 <p>As configurações para cabeçalho e rodapé foram zeradas</p>';

$Pdf->writeHTML($html);

echo $Pdf->Output('etiqueta.pdf','I'); 

Neste exemplo, antes de adicionar uma nova página, desabilito o cabeçalho e rodapé padrão do TCPDF. E o resultado:

Na página do TCPDF há uma vasta documentação e exemplos de uso.

4 comentários:

Wilian Selzlein disse...

Obrigado Francisco! Funcionou!

aaa disse...

Error: Call to a member function setPrintHeader() on a non-object
File: C:\wamp\www\testtcpdf\app\View\Etiquetas\view_pdf.ctp
Line: 4

Notice: If you want to customize this error message, create app\View\Errors\fatal_error.ctp


Help me , please !!!

Francisco ACLima disse...

Tente rodar com os cabeçalhos e rodapeś padrão do TCPDF
Comente ou exclua as linhas:
$Pdf->setPrintHeader(false);

$Pdf->setPrintFooter(false);

Rode de novo e veja se agora funciona. Se não funcionar, a instalação do TCPDF deve ser revisada.

Até...

Sebastião Júlio Mugunhe disse...

Obrigado mano pela dica, funciona.
Espero que ajude mais vezes sobre este brilhante framework (Cakephp).