cakephp 2.0でFpdfを使ってPDFを作成するには?

私は実際には非常に遠いですが、私の期待通りの出力は不器用で、フォーマットされた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');

}

表示/レイアウト/ 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はroot/Vendorsディレクトリにインストールされています。

3

2 答え

コントローラの関数の応答タイプを変更する:

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');
}
1
追加された

In cake2 you can use a cleaner approach - with or without the new response object: http://www.dereuromark.de/2011/11/21/serving-views-as-files-in-cake2/

ヘッダーはコントローラからケーキ自体によって設定されます。 レイアウトでそれらを設定するのは良いコーディングではありません(私はそれをやっていました^^)。

最近の CakePdfプラグインは、PDF生成のための非常に有用なツールに成熟しています。 私はCake2.xでそれを使用することをお勧めします。

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

0
追加された
いいえ、私はこれを動作させることができませんでした。私はFPDFではなくDOMPDFを使用していますが、両方のパッケージを試しました。それは、コントローラ上の同じアクション内からpdfビューをロードしようとしていることを示唆しています。
追加された 著者 khany,
新しいレスポンスオブジェクトの詳細については、 book.cakephp.org/を参照してください。 2.0/ja/controllers /&hellip;
追加された 著者 mark,