开发者

CakePHP downloadable PDF file

This is code that I have added in my vendors/xtcpdf.php file:

<?php App::import('Vendor','tcpdf/tcpdf');

class XTCPDF  extends TCPDF {

    var $xheadertext  = 'PDF created using CakePHP and TCPDF';
    var $xheadercolor开发者_如何学Python = array(0,0,200);
    var $xfootertext  = 'Copyright © %d XXXXXXXXXXX. All rights reserved.';
    var $xfooterfont  = PDF_FONT_NAME_MAIN;
    var $xfooterfontsize = 8;

    /**
    * Overwrites the default header
    * set the text in the view using
    *    $fpdf->xheadertext = 'YOUR ORGANIZATION';
    * set the fill color in the view using
    *    $fpdf->xheadercolor = array(0,0,100); (r, g, b)
    * set the font in the view using
    *    $fpdf->setHeaderFont(array('YourFont','',fontsize));
    */
    function Header()
    {

        list($r, $b, $g) = $this->xheadercolor;
        $this->setY(10); // shouldn't be needed due to page margin, but helas, otherwise it's at the page top
        $this->SetFillColor($r, $b, $g);
        $this->SetTextColor(0 , 0, 0);
        $this->Cell(0,20, '', 0,1,'C', 1);
        $this->Text(15,26,$this->xheadertext );
    }

    /**
    * Overwrites the default footer
    * set the text in the view using
    * $fpdf->xfootertext = 'Copyright © %d YOUR ORGANIZATION. All rights reserved.';
    */
    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');
    }
}
?>

Here is the code from my controller:

public function download($id = null) {

    if (!$id) 
    { 
        $this->Session->setFlash('Sorry, there was no property ID submitted.'); 
        $this->redirect(array('action'=>'index'), null, true); 
    } 
    Configure::write('debug',0); // Otherwise we cannot use this method while developing 

    $id = intval($id); 

    $property = $this->User->find('all',array('conditions'=>array('User.id'=>$id))); // here the data is pulled from the database and set for the view 
    //$property = $this->__view($id); 
    if (empty($property)) 
    { 
        $this->Session->setFlash('Sorry, there is no property with the submitted ID.'); 
        $this->redirect(array('action'=>'index'), null, true); 
    } 

    $this->layout = 'pdf'; //this will use the pdf.ctp layout 
    $this->render('download');
}

Here is the code in my views file:

<?php
App::import('Vendor','xtcpdf');
$tcpdf = new XTCPDF(); 
$textfont = 'freesans'; // looks better, finer, and more condensed than 'dejavusans' 

$tcpdf->SetAuthor("KBS Homes & Properties at http://kbs-properties.com");
$tcpdf->SetAutoPageBreak( false );
$tcpdf->setHeaderFont(array($textfont,'',40));
$tcpdf->xheadercolor = array(150,0,0);
$tcpdf->xheadertext = 'KBS Homes & Properties';
$tcpdf->xfootertext = 'Copyright © %d KBS Homes & Properties. All rights reserved.'; 

// add a page (required with recent versions of tcpdf)  $tcpdf->AddPage(); 

// Now you position and print your page content  // example:   $tcpdf->SetTextColor(0, 0, 0);  $tcpdf->SetFont($textfont,'B',20);  $tcpdf->Cell(0,14, "Hello World", 0,1,'L');  // ...  // etc.  // see the TCPDF examples  

echo $tcpdf->Output('sample.pdf', 'D'); 

?>

How can I add data so it will be visible in a PDF file and the PDF file will be downloaded?


Just headups. All the rest available on google too:

http://bakery.cakephp.org/articles/kalileo/2010/06/08/creating-pdf-files-with-cakephp-and-tcpdf

http://book.cakephp.org/view/1094/Media-Views

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜