入門 8 - 図形の出力 -
PDFlib は、基本的な図形の出力、座標の変換、図形のフィルパターンやシェイディングを行うグラフィック関数を用意しています。
下図は簡単な出力例で、直線、弧、自由曲線、多角形、矩形、円を出力しています。
最初の直線を出力するスクリプトは次のようになります。
$p->setcolor("fillstroke", "rgb", 0.5, 0.0, 0.0, 0.0); //色を指定
$p->setlinewidth(5.0); //ストローク幅を指定
$p->moveto(80.0, 800.0); //始点座標
$p->lineto(20.0, 770.0); //直線を出す(終点座標)
$p->stroke(); //出力する
PHP 8 / PDFlib 10
最初の2行は出力のための設定です。setcolor()関数で色を、setlinewidth()関数で出力する線の幅を指定しています。色の指定で、「fillstroke」となっているのは、フィルパターンもストロークも同じ色に指定しているということで、「fill」「stroke」と別々に指定することもできます。ストローク幅は現行の座標単位であるポイントで指定します。
次の3行は直線の描画処理です。moveto()関数で始点を、lineto()関数で終点を指定し、stroke()関数で実際に出力します。同様にその他の図形も設定、描画の順で出力します。以下に描画の部分のスクリプトを示します。設定のスクリプトは示していませんが、色の指定を行っています。
$p->moveto(20.0, 700.0); // 始点座標
$p->curveto(30.0, 760.0, 70.0, 765.0, 80.0, 700.0); // 制御点と終点座標
$p->stroke(); // 出力する
PHP 8 / PDFlib 10
curveto()関数で3次ベジエ曲線を出力します。第1から第4パラメータで二つの制御点の座標、第5、第6パラメータで終点の座標を指定します。
$p->arc(50.0, 665.0, 20.0, 0.0, 270.0); // 始点、終点座標と半径と角度 (alpha/beta)
$p->stroke(); // 出力する
PHP 8 / PDFlib 10
弧を描きます。第1、第2パラメータが円弧の中心の座標、第3パラメータが半径の値、第4、第5パラメータが弧の開始および終了の角度です。
$p->moveto(100.0, 800.0); // 始点座標および各頂点座標
$p->lineto(105.0, 772.0);
$p->lineto(115.0, 782.0);
$p->lineto(140.0, 787.0);
$p->lineto(150.0, 805.0); // 終点座標
$p->closepath(); // 終点座標と始点座標を結ぶ
$p->fill(); // 塗りつぶして出力する
PHP 8 / PDFlib 10
多角形は連続する直線として描きます。closepath()関数で最後と最初の点を直線で閉じます。ここではfill()関数により塗りつぶしを行います。
$p->circle(135.0, 725.0, 20.0); // 中心座標と半径
$p->stroke(); // 出力する
PHP 8 / PDFlib 10
円を描きます。第1、第2パラメータが中心の座標、第3パラメータが半径です。
$p->rect(110.0, 650.0, 60.0, 30.0); // 左下隅の座標と幅、高さ
$p->fill(); // 塗りつぶして出力する
PHP 8 / PDFlib 10
矩形を描きます。第2、第3パラメータで矩形の左下隅の座標、第4、第5パラメータで幅、高さを指定します。