【TCPDF】PDFに角丸図形を描く

2009.10.27 Author: Jas

PHPからPDFを生成するライブラリはFPDF、PDFLibなどいくつかあります。
以前はFPDFを使用していたのですが、UTF-8で開発を行うと文字化けなどいろいろ厄介な問題があるので、UTF-8に対応したTCPDFを使ってみることにしました。

TCPDFについては、こちらのサイトがわかりやすいので詳細は省きますが、今回はTCPDFの機能を使って角丸図形(四角)を描く方法を紹介したいと思います。

角丸図形というと、CSSなどでも苦戦して作るイメージがあるのですが、TCPDFでの角丸図形描画の簡単さには感動してしまいました。

TCPDFにはRoundedRectという関数が用意されているので、標準機能だけで、以下のような図形を描くことができるんですよ。

kadomaru.png

一段ずつ描画方法を紹介していきます。
とは言っても、一つの関数でできてしまうので、関数の使い方紹介になりますが。

まずは、普通の角丸です。
普通の角丸でも、べた塗りと白抜きの両方対応しています。

// 描画する線の太さ、色を指定$blue = array(31, 73, 125);
$pdf->setLineWidth(0.4);
$pdf->SetDrawColor(31, 73, 125);

// 普通の角丸 - 第7引数のDが枠線、Fが図形の内側べた塗り
$pdf->RoundedRect(10, 10, 30, 10, 2, '1111', 'DF', null, $blue);
$pdf->RoundedRect(50, 10, 30, 10, 2, '1111', 'D', null, $blue);


4つの角すべて丸くするのではなく、一部の角だけ丸くすることもできます。第6引数の1と0が、それぞれの角に対応しており、1になっている角だけ丸くなります。 こんな図形が簡単に描画できるのはとてもいいですね。

// 第6引数の1が立ってる角だけ丸くなる
$pdf->RoundedRect(10, 25, 30, 10, 2, '1010', 'D', null, $blue);


角の丸みも指定することができます。
マニュアルにも書いてありますが、指定した数字が角の丸を描画する半径になります。
第5引数で1が一番シャープな(!?)角丸になり、数字を増やすとどんどん角がなくなります。

// 第5引数で、角の丸みを変えてみると・・・
$pdf->RoundedRect(10, 40, 30, 10, 5, '1111', 'D', null, $blue);
$pdf->RoundedRect(50, 40, 30, 10, 5, '1010', 'D', null, $blue);


そして、この関数でできる機能を組み合わせると・・・
以下のようなネームタグ(!?)も簡単に作成できます。

$pdf->RoundedRect(10, 55, 30, 10, 2, '0011', 'DF', null, $blue);
$pdf->RoundedRect(40, 55, 50, 10, 2, '1100', 'D');

$pdf->SetXY(12, 57);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFontSize(15);
$pdf->Cell(25, 0, 'Name', 0, 0, 'C');
$pdf->SetTextColor(0, 0, 0);
$pdf->Cell(50, 0, 'Jasmine', 0, 0, 'R');


名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ