2012-02-06 40 views
3

私は実際には非常に遠いですが、私の予想通り、出力は不器用で、フォーマットされたPDFではありません。cakephp 2.0でFpdfを使って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; 
?> 

ビュー/ジョブ/ pdf.ctp:

ここでは、関連するコードがあります
<?php 
    $fpdf->AddPage(); 
    $fpdf->SetFont('Arial','B',16); 
    $fpdf->Cell(40,10,$data); 
    $fpdf->Output(); 
?> 

FPDFがroot/Vendorsディレクトリにインストールされている。

答えて

1

変更応答タイプを参照してください:新しい応答オブジェクトの詳細については

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

cake2では、クリーンなアプローチを使用することができます - または新しい応答オブジェクトなし: http://www.dereuromark.de/2011/11/21/serving-views-as-files-in-cake2/

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

最近では、CakePdf pluginがかなり成熟して、PDF生成のための非常に便利なツールになっています。 Cake2.xでそれを使用することをお勧めします。

は、あなたのコントローラ機能にhttp://www.dereuromark.de/2014/04/08/generating-pdfs-with-cakephp

+0

はhttp://book.cakephp.org/2.0/en/controllers/requestを見ます-response.html#cakeresponse – mark

+0

いいえこれを動作させることができませんでした。私はFPDFではなくDOMPDFを使用していますが、両方のパッケージを試しました。それは、コントローラ上の同じアクション内からpdfビューをロードしようとしていることを示唆しています。 – khany

関連する問題