PDFlib

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

入門 5 - テキストを出力する (III) -

3. 単一行テキストの出力

1行のテキストを出力するには、show()関数またはfit_textline()関数を利用できます。show()関数は単純にテキストを出力する場合、fit_textline()は文字をテキストボックスを基準に字形を変形したい場合などに使用します。

show()関数による出力

show()は、2.簡単なプログラム例 で示したハローワールドプログラムで使用されています。この例でわかるようにテキストを出力するときには、通常、以下の手順に従います。


  //フォントをロードする
  $p->set_option("searchpath=resource/fonts");
  $p->set_option("FontOutline={MS-Mincho=msmincho.ttc}")
  $font = $p->load_font("MS-Mincho", "unicode", "");
  if ($font == 0) {
    die("Error: " . $p->get_errmsg());
  }

  //次のテキスト出力で使うフォント及びそのサイズを指定する
  $p->setfont($font, 24.0);

  //テキストの位置を指定する
  $p->set_text_pos(100, 700);

  //テキストを出力する
  $p->show("ハローワールド!"); 
  $p->continue_text("(ようこそPDFlibの世界へ)");
PHP 8 / PDFlib 10

ここで、continue_text()関数は、次の行を出力する関数で、直前のshow()、fit_textline()、またはset_text_pos()の結果とleading(行間)パラメータにより、次行の先頭を決定します。行間や字間などテキスト出力に関連する設定値は、パラメータで制御することができます。

fit_textline()関数による出力

fit_textline()は、テキストボックスを想定してテキストの配置、変形を行うことができます。テキストボックスのサイズをオプションで指定しない時は文字列を囲む矩形がテキストボックスになります。ページの左上にテキストを配置する例で出力の手順を示します。


$p->set_option("searchpath=resource/fonts");
$p->set_option("FontOutline={MS-Mincho=msmincho.ttc}")
$font = $p->load_font("MS-Mincho", "unicode", "");
if ($font == 0) {
  die("Error: " . $p->get_errmsg());
}

//次のテキスト出力で使うフォント及びそのサイズを指定する
$p->setfont($font, 48.0);

//テキストを出力する
$text="東京都";
$p->fit_textline($text, 10, 800, "position {0 100}");
PHP 8 / PDFlib 10
図 PDF_fit_textline()関数の出力

出力結果は右図のようになります。

ここで、fit_textline() の第1パラメータには文字列、第2、第3パラメータにはそれぞれページ上の参照点のX、Y座標を指定します。オプションリストでは、キーワードpositionにより、テキストボックス内の相対位置(左下隅:0,0、右上隅:100,100)を指定します。この相対位置が前記の参照点に重なるようにテキストが配置されます。

テキストボックスのサイズをオプションリストで明示的に指定することにより、テキストの変形などを行うことができます。またキーワードrotateにより文字列の向きを指定することができます。たとえば、


  $p->fit_textline($text, 30, 680,
  "boxsize {96 144} position {0 100} fitmethod entire orientate west");
PHP 8 / PDFlib 10
図 PDF_fit_textline()関数の出力2

の出力は、右図のようになります。ボックスサイズは96×144と実際の文字列より大きく、fitmethodがentireとなっているため、文字はボックスサイズいっぱいに変形されて配置されます。またorientateをwestとしているため文字列全体が左90度回転されています。

fit_textline()は、文字列をイメージのように配置する関数とも言え、後ほど説明するfit_image()関数とほとんどのオプションが共通しています。

(Nov 10, 2006 - Dec 6, 2021)