|
phpのPDFフリー作成モジュールTCPDFを利用するためのプラグインの利用方法をまとめてみました。日本語もかなり簡単な方法で利用できます。(TCPDFフォルダにttfフォントファイルをphpで利用できるようにするユーティリティが付属しています。)
xampp/symfonyがインストール済みであるものとします。
また、プロジェクトフォルダは/home/sfprojects/以下に作成するものとします。
/*symfonyの基本操作部分*/
1 プロジェクトフォルダ作成
コマンドプロンプトから、
$ mkdir /home/sfprojects/pdf
2 プロジェクトフォルダに移動
コマンドプロンプトから、
$ cd /home/sfprojects/pdf
3 プロジェクトの初期化
コマンドプロンプトから、
$ symfony init-project pdf
4 アプリケーションの初期化
コマンドプロンプトから、
$ symfony init-app frontend
5 モジュール初期化
コマンドプロンプトから、
$ symfony init-module frontend pdf
/*プラグインのインストール*/
6 sfTCPDFPluginインストール
コマンドプロンプトから、
$ symfony plugin-install http://plugins.symfony-project.com/sfTCPDFPlugin
/*TCPDFのダウンロード*/
7 TCPDFをダウンロードし展開
ブラウザから、
http://www.tecnick.com/public/code/cp-dpage.php?aiocp_dp=tcpdf
8 tcpdfフォルダをコピー
/home/sfprojects/pdf/plugins/sfTCPDFPlugin/lib/以下にコピー
9 キャッシュクリア
コマンドプロンプトから、
$ symfony cc
/*TCPDFで日本語を利用できるようにする*/
10 日本語フォントを入手(例としてIPAのものを利用)
http://ossipedia.ipa.go.jp/ipafont
ipagp.ttf(Pゴシック)
ipam.ttf(明朝)
ipag.ttf(ゴシック)
ipagui.ttf(UIゴシック)
ipamp.ttf(P明朝)
が入手可能。
11 ttfファイルからufmファイルを作成する。
tcpdfに付属しているユーティリティtcpdf/fonts/ttf2ufm/ttf2ufm.exeで作成できる。
適当なttfファイルをユーティリティであるttf2ufm.exeのあるフォルダにコピーする。
コマンドプロンプトで同階層に移動してから
$ ttf2ufm –a –F ipag.ttf
を実行すると、
ipag.afm
ipag.t1 a
ipag.ufm
ファイルが作成される。
12 次にphpで利用できるファイルに変換する。
コマンドプロンプトから、
$ php –q makefontuni.php ipag.ttf myfont.ufm
を実行すると、
ipag.php
ipag.ctg.z
ipag.z
の3つのファイルができる。
13 3つのフォントファイルをtcpdf/font/以下に配置
既に同じ3ファイル(.php/.ctg.z/.z)構成の色々なフォントファイルが配置されているが、日本語がない。
そこで、先ほど作成した3つのファイルを
/home/sfprojects/pdf/plugin/sfTCPDFPlugin/lib/tcpdf/font/
にコピーすることで日本語が利用できるようになる。これだけで良い。
/*symfonyでPDF作成のテストを行う*/
14 テストファイルを作成
/home/sfprojects/pdf/apps/frontend/modules/actions/action.class.phpに
<?php
class pdfActions extends sfActions
{
public function executeIndex()
{
//$this->forward('default', 'module');
}
/**
* Hello world test
*/
public function executeTest()
{
// pdf object
$pdf = new sfTCPDF();
// settings
$pdf->SetFont("ipag", "", 12);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
$pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
// init pdf doc
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->Cell(80, 10, "Hello World !!! & e ? U u いろは薔薇");
// output
$pdf->Output();
return sfView::NONE;
}
}
15 ファイルを実行
routing.ymlの設定は各自で行ってもらうとして、
http://localhost/frontend_dev.php/pdf/test
でアクションモジュール実行。
16 pdfファイルが表示される。
※自分の環境では、なぜかIE7では実行できず、FireFoxでは実行できました。なんか設定が悪いんでしょうなぁ…。
※あと、生成されたPDFファイルのサイズが大きすぎて、はっきりいって使い物にならない…。
|