Yii Framework: PDFを出力してみる
今日も今日とてYii Frameworkです。
今日はPDFを出力させてみます。
PDF出力は、tcpdfというPHPの拡張ライブラリと、
ETcPdfという、上記tcpdfをYiiで使う為のラッパーを設置することできるようです。
- まずはプロジェクトhogeのprotected/extensions/ 内にtcpdfというフォルダを作ります。
- 上記サイトからETcPdfのPHPファイルETcpdf.phpをダウンロードして、作成したtcpdfフォルダ内に置きます。
- さらに、拡張ライブラリtcpdfをこのETcpdf.phpの横にダウンロード・展開します。なおこのダウンロードしたtcpdfもtcpdfというフォルダに入ってます。ややこしいw このフォルダ名を変更する場合ETcpdf.php内で設定されてるパスも変更する必要があります。
- ETcpdf.phpに若干バグ?があるようなので修正します。
85行目:
define (“K_PATH_CACHE”, Yii::app()->getRuntimePath());
を
if (!defined(“K_PATH_CACHE”)){
define (“K_PATH_CACHE”, Yii::app()->getRuntimePath());
}
に変更。
これで準備完了ですw はやw
では書き出しテストを。
使用してるコントローラーMogeにテスト用コードを埋めます。
コードはプラグインサイトのをほぼマルコピです。
class MogeController extends Controller {
public function actionPublishPdf() {
$pdf = Yii::createComponent(‘application.extensions.tcpdf.ETcPdf’, ‘P’, ‘cm’, ‘A4’, true, ‘UTF-8′);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor(“Nicola Asuni”);
$pdf->SetTitle(“TCPDF Example 002”);
$pdf->SetSubject(“TCPDF Tutorial”);
$pdf->SetKeywords(“TCPDF, PDF, example, test, guide”);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont(“times”, “BI”, 20);
$pdf->Cell(0,10,”Example 002″,1,1,’C’);
$pdf->Output(“example_002.pdf”, “I”);
}
…
public function actionPublishPdf() {
$pdf = Yii::createComponent(‘application.extensions.tcpdf.ETcPdf’, ‘P’, ‘cm’, ‘A4’, true, ‘UTF-8′);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor(“Nicola Asuni”);
$pdf->SetTitle(“TCPDF Example 002”);
$pdf->SetSubject(“TCPDF Tutorial”);
$pdf->SetKeywords(“TCPDF, PDF, example, test, guide”);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont(“times”, “BI”, 20);
$pdf->Cell(0,10,”Example 002″,1,1,’C’);
$pdf->Output(“example_002.pdf”, “I”);
}
…
これでhttp://hoge.com/hoge/moge/publishpdf/にアクセスしてPDFが画面に表示されればおkです。
(ニコ動の某ボブ絵画教室風に)ね、簡単でしょうw
なお、上のテスト用パラメータの書き方は、Yii用に特別とかはなくtcpdfの一般的な書き方と同じみたいです。
tcpdfでぐぐるといろいろ出てくるので詳細はそちらをご参照くださいw
Generating PDFs with PHP and FPDF (and TCPDF)
posted with amazlet at 13.06.24
(2013-01-15)
コメントを残す