2013年2月9日土曜日

CakePHPでPDF出力

PDFライブラリ

CakePHPでPDFを出力する方法を試してみた。
まず、PDFライブラリですが、調べたところイロイロあり迷ったのですが、TCPDFを使用することにしました。
決め手は、
  • 後発
  • UTF-8 対応
かな。
TCPDFサイトにはexamplesが大量にあったのでそれを参考にすればよさそう。

CakePHPでの使用

まずは、TCPDFをダウンロード&展開し、
  • トップ/app/Vendor/tcpdf
に置きます。

次に、コントローラ作成
  • トップ/app/Controller/PdfsController.php
 <?php
 class PdfsController extends AppController {
  public $components = array('RequestHandler');

  public function pdfTest() {
   // Content-Type
   $this->RequestHandler->respondAs('application/pdf');

   // レイアウトを使用しない
   $this->layout = '';
  }
 }

最後に、ビュー作成
  • トップ/app/View/Pdfs/pdf_test.ctp
 <?php
 App::import('Vendor', 'tcpdf/tcpdf');
 $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
 $pdf->AddPage();
 $pdf->Cell(0, 0, 'Hello World');
 $pdf->Output('HelloWorld.pdf', 'I');

Content-Typeがうまく設定できなくてはまりました。RequestHandlerが必要なんだって。