PDFlib

高度なPDFアプリケーションの開発を支援する定番プログラムライブラリー Supported by インフォテック株式会社

入門 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パラメータで幅、高さを指定します。

(Nov 10, 2006 - Dec 6, 2021)