Cakephp générer un pdf avec TCPDF

Par krimovish, il y a 12 ans


salut , je suis debutant dans cakephp, je besoin de creer une fonction qui genere les pdf (creer, afficher, telecharger...) en utilisant TCPDF.
1 - j'ai téléchargeé TCPDF.
2 - j'ai renommé le dossier en tcpdf , je l'ai copié dans : app\Vendor\tcpdf.
3 - j'ai creé un ficher xtcpdf.php dans : app\Vendor\tcpdf\xtcpdf.php
4 - j'ai copié ce code la dans xtcpdf.php:
[code]<?php
// ficher : xtcpdf.php chemin : app\Vendor\tcpdf\xtcpdf.php
App::import('Vendor','tcpdf/tcpdf');

class XTCPDF  extends TCPDF
{

    var $xheadertext  = 'PDF creado using CakePHP y TCPDF';
    var $xheadercolor = array(0,0,200);
    var $xfootertext  = 'Copyright © %d XXXXXXXXXXX. All rights reserved.';
    var $xfooterfont  = PDF_FONT_NAME_MAIN ;
    var $xfooterfontsize = 8 ;

    function Header()
    {

        list($r, $b, $g) = $this->xheadercolor;
        $this->setY(10);
        $this->SetFillColor($r, $b, $g);
        $this->SetTextColor(0 , 0, 0);
        $this->Cell(0,20, '', 0,1,'C', 1);
        $this->Text(15,26,$this->xheadertext );
    }

    function Footer()
    {
        $year = date('Y');
        $footertext = sprintf($this->xfootertext, $year);
        $this->SetY(-20);
        $this->SetTextColor(0, 0, 0);
        $this->SetFont($this->xfooterfont,'',$this->xfooterfontsize);
        $this->Cell(0,8, $footertext,'T',1,'C');
    }
}

?>[/code]

5 - j'ai creé pdf.ctp dans : app\view\layouts\pdf.ctp
[code]
<?php
header("Content-type: application/pdf");
echo $content_for_layout;
?>[/code]

6- j'ai creé la vue viewpdf.ctp dans : app\view\Posts\viewpdf.ctp
[code]
<?php
App::import('Vendor','tcpdf/xtcpdf');
$tcpdf = new XTCPDF();
$textfont = 'freesans';

tcpdf->SetAuthor(""); $tcpdf->SetAutoPageBreak( false ); $tcpdf->setHeaderFont(array(textfont,'',10));
$tcpdf->xheadercolor = array(255,255,255);
$tcpdf->xheadertext = 'Fecha: '. date('d-m-Y',time());
$tcpdf->xfootertext = 'www.example.cl';

tcpdf->AddPage(); $tcpdf->SetTextColor(0, 0, 0); $tcpdf->SetFont(textfont,'B',10);
$tcpdf->Cell(10,20,'Nombre:', 0, 0);

// more info

echo $tcpdf->Output('mi_archivo.pdf', 'D'); //D or I
?>[/code]

7- dans mon PostsController , j'ai creé la fonction :
[code]
function viewpdf(id = null) { if (!id)
{
this->Session->setFlash('no has seleccionado ningun pdf.'); $this->redirect(array('action'=>'index')); } Configure::write('debug',0); $resultat = $this->Post->findById(id); // info from database
this->set("datos_pdf",resultat); // info to view (pdf)
$this->layout = 'pdf';
$this->render();
}[/code]

[b]le problème est que lorsque j'affiche la vue dans le navigateur : http://localhost/test/posts/viewpdf/37[/b]
[b],cela n'affiche pas le pdf mais le code suivant:[/b]
[b][/b]
[b]TCPDF ERROR: Some data has already been output, can't send PDF file[/b][i][/i]
ou est le probleme ??

Aucune réponse