Как создать PDF, используя Fpdf в CakePHP 2.0? - PullRequest
3 голосов
/ 06 февраля 2012

Я на самом деле очень далеко, но мой вывод - бред, а не форматированный pdf, как я ожидал.Вот соответствующий код:

JobsController:

public function viewpdf() {
    App::import('Vendor', 'Fpdf', array('file' => 'fpdf/fpdf.php'));
    $this->layout = 'pdf'; //this will use the pdf.ctp layout

    $this->set('fpdf', new FPDF('P','mm','A4'));
    $this->set('data', 'Hello, PDF world');

    $this->render('pdf');

}

View / Layouts / pdf.ctp:

<?php
    header('Content-Disposition: attachment; filename="downloaded.pdf"');
    echo $content_for_layout;
?>

View / Jobs / pdf.ctp:

<?php
    $fpdf->AddPage();
    $fpdf->SetFont('Arial','B',16);
    $fpdf->Cell(40,10,$data);
    $fpdf->Output();
?>

с установленным FPDF в корневом каталоге / Vendors.

Ответы [ 2 ]

1 голос
/ 10 октября 2012

Измените тип ответа в функции вашего контроллера:

public function viewpdf() {
App::import('Vendor', 'Fpdf', array('file' => 'fpdf/fpdf.php'));
$this->layout = 'pdf'; //this will use the pdf.ctp layout

$this->response->type('pdf');

$this->set('fpdf', new FPDF('P','mm','A4'));
$this->set('data', 'Hello, PDF world');
$this->render('pdf');
}
0 голосов
/ 06 февраля 2012

В cake2 вы можете использовать более чистый подход - с новым объектом ответа или без него: http://www.dereuromark.de/2011/11/21/serving-views-as-files-in-cake2/

Заголовки будут установлены самим тортом из контроллера. Неправильно (больше) кодировать их в макете (я тоже так делал ^^).

В наши дни плагин CakePdf довольно сильно превратился в очень полезный инструмент для создания PDF. Я рекомендую использовать это в Cake2.x.

См. http://www.dereuromark.de/2014/04/08/generating-pdfs-with-cakephp

...