株式会社プロネット

 

WEBシステム開発、ITコンサルティング、自社サービス、教育事業 - これからのビジネスへのIT活用ソリューションをご提案致します。

CakePHPでPDF出力

2016.9.20(Tue) 20:36 | PHP | yamamoto

TCPDFを使いCakePHPでPDFの出力できるように実装しました。

今回は、環境を整えてテスト出力する所までまとめました。

 

1. ダウンロード

https://sourceforge.net/projects/tcpdf/files/ からzipファイルをダウンロードします。

2. 配置

ダウンロードしたファイルを展開し、「app/Vendor/」にコピーします。

3. コントローラ

Content-Type をPDFに指定します。

class PdfController extends AppController {
  public function index() {
    $this->layout = '';
   $this->RequestHandler->respondAs('application/pdf');
  }
}

4. ビュー

ビューではtcpdfクラスを読み込み、出力内容を記述していきます。

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8');
 $pdf->setPrintHeader(false); // ヘッダー無し
 $pdf->setPrintFooter(false); // フッター無し
$this->SetFont('kozgopromedium'); // フォントを指定
$this->AddPage(); // ページ追加
$pdf->Cell(0, 0, 'テスト.テスト.');

ob_end_clean();
$pdf->Output('test.pdf', 'I'); // 出力
 

「ob_end_clean() 」をOutpt直前に加えないとErrorになります。

関数リファレンスによると「 出力用バッファをクリア(消去)し、出力のバッファリングをオフにする」だそうです。

 

出力内容はHTMLを指定することができますが、

1. 対応しているCSSが一部だけ

2. PHPとHTMLが混在しソースがわかりづらくなる

3. 処理に時間がかかる

ので今回はTCPDFのメソッドで出力するようにしました。

 

参考URL:

http://xn--cakephp-gt4fral1s5v.jp/tcpdf/

http://tcpdf.penlabo.net/

http://www.t-net.ne.jp/~cyfis/tcpdf/index.html

http://orkshinnosuke.hatenablog.com/entry/2014/04/18/223859