CakePHPクッキング

TCPDFを使ってCakePHPでPDFを作成

開発環境:CakePHP2.5.1

CakePHPでPDFを作成するには幾つかの方法がありますが、今回はTCPDFを使った方法を紹介します。

TCPDFの準備

まずは、下記よりファイルをダウンロードします。
http://sourceforge.net/projects/tcpdf/files/
(バージョン:6.0.090)

ダウンロードしたファイルを解凍して、app/Vendor/ 以下に配置します。

コントローラーの準備

続いてコントローラー側の設定です。
RequestHandlerのrespondAsメソッドを使って、Content-Typeを指定します。

<?php
class PdfController extends AppController {

    public $components = array('RequestHandler');

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

ビューでHTMLを作ってPDF化

最後にビュー側の設定です。
ここでPDFの様々な設定とPDFに表示する情報をHTMLタグで生成します。

<?php
App::import('Vendor','tcpdf/tcpdf');

// 各種設定は app/Vendor/tcpdf/config/tcpdf_config.php で定義
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8');

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// 日本語表示のために「小塚ゴシックPro M」を指定
$pdf->SetFont('kozgopromedium');

// ページを追加
$pdf->AddPage();

$html = <<< EOF
<style>
.contents {
    text-align: center;
    font-size: 20px;
}
</style>
<div class="contents">PDFテスト</div>
EOF;

$pdf->writeHTML($html, false, false, false, false, 'L');

// ダウンロード
$pdf->Output('sample.pdf', 'D');

これでindexアクションを呼び出すとPDFをダウンロードするかのダイアログが表示されます。

The following two tabs change content below.

柴田 篤志

愛知県一宮市在住のWEBシステム屋(SE・プログラマ)。PHP、 CakePHPを利用して日々開発中。CakePHPをこれから始める方、ある程度CakePHPで開発をしている初級〜中級者の方を対象に、CakePHPでの開発をスピードアップするための情報をまとめています。CakePHPの案件のご依頼、御見積はこちらへご連絡ください。

最新記事 by 柴田 篤志 (全て見る)

WordPressとCakePHPの共存

サイトを作るのに便利なWordPress。プラグインも数多く用意されて

サイトマップの作成方法

Googleのウェブマスターツールに渡すためのサイトマップの作成方法で

INSERTしたIDを取得する

データを保存した後にINSERTされたデータのIDを使って何かの処理を

ファイルの存在確認やフォルダー内のファイル一覧取得

特定のファイルの存在を確認したい場合や特定のフォルダー内にあるファイル

リンクの最後に常にスラッシュをつける方法

URLの最後に常にスラッシュをつけるかつけないかを統一する方法は、UR

countやsumを使う時のフィールド名を指定する

CakePHPでcountやsumなどを使う場合、ちょっとした工夫が必

Formの便利な使い方

問い合わせフォームや会員機能など、WEBサイトを作る際に必ず必要になる

ヘルパーをオーバーライドする

CakePHPで便利な機能が詰まったヘルパーですが、時々もう少しこうだ

特定の時だけSQLの条件を追加するならSet::mergeを使う

SQLの条件を追加したい時に使うのがarray_mergeなどですが、

ページネーションではDISTINCTではなく、GROUP BYを使う

重複したデータを省く時に使うDISTINCTですが、ページ送りで使う時

Model内で別のModelを呼び出す

モデル内で別のモデルを使いたいケースがあった場合、次のようにすることで

CakePHPでGoogleAnalyticsAPIを使う

CakePHPでGoogleAnalyticsを使う方法について見てい

独自のfindを定義するfindMethods

findをより便利に、よりスッキリ書くのに、findMethodsを使

TCPDFを使ってCakePHPでPDFを作成

CakePHPでPDFを作成するには幾つかの方法がありますが、今回はT

JavaScriptをコードの最下部に配置

SEOの観点からJavaScriptのコードは一番下に記述したいところ

無限スクロールをさせる

TwitterやFacebookのタイムラインを見ていて、ページの下に

PHPExcelの導入

ExcelにDBのデータを表示して一覧を作ったり、請求書などのフォーマ

Warning: SplFileInfo::openFile〜の警告が表示されたら

ShellとWEBの両方で同一のModelを呼び出す時に「Warnin

連結されていないデータを抽出

通常、テーブルを連結してデータを取得するには、アソシエーションを利用し

データを取得する

データを取得したい時に少し変わった条件で取得したい場合があります。

PAGE TOP ↑