myPDF

Multi-Byte fPDF/fPDI Wrapper
version: 0.15

(c)2009 Kona

目次

導入

これはMulti-Byte fPDF/fPDI(mbfpdf.php/mbfpdi.php)※1を(作者が)使いやすいように拡張したクラスを定義するものです。限られたスペースに最大限の文字を詰め込むのに有効です。

※1 fPDFはPHPでPDFを作成することができ、fPDIはそれにPDI機能(PDFをテンプレートとして挿入する機能)を追加したもので、Multi-Byte fPDF/fPDI(mbfpdf.php/mbfpdi.php)はそれらをマルチバイト対応させたものです。

インストール/設定

要件

PHPバージョン5または4.3.2以降が推奨です。
マルチバイトモジュールmbstringが組み込まれている必要があり、内部文字エンコーディングが適切に設定されている必要があります。

Multi-Byte fPDF(mbfpdf.php)バージョン1.0bが推奨です。
fPDIバージョン1.2が推奨です。
fPDFバージョン1.51~1.53が推奨です。

Multi-Byte fPDF(mbfpdf.php)とfPDF、fPDIはオープンソースで公開されています。
Multi-Byte fPDIはMulti-Byte fPDFにパッチをあてるか、自分で(2ヶ所)修正することで手に入れます。

myPDFはMulti-Byte fPDIを前提に作成されていますが、ソースを2ヶ所ほど修正するだけでMulti-Byte fPDFでも対応します。また保証はできませんが他のバージョンでも動作するかもしれません。

インストール手順

fPDF、fPDI、Multi-Byte fPDF(mbfpdf.php)をそれぞれのマニュアルに従って、phpからインクルードできる同じ場所にインストールしてください。

myPDF.phpをそれらと同じ場所に置いて下さい。

実行時設定

設定ディレクティブ等は定義されていません。

定義済み定数

定数は定義されていません。

機能

単位指定

寸法を指定する場合、数値で指定するとmyPDF()等のコンストラクタで指定したデフォルトの寸法単位が適用されます。ただしSetFont()SetFontSize()メソッドによるフォントサイズ指定については、仕様の都合でデフォルト単位に関係なくポイント(pt)固定になっています。

そこでmyPDFでは、数値の後に単位文字列をつなげた文字列で指定する単位指定を利用することで、デフォルト単位とは別の寸法単位で指定することが出来るようになりました。

$pdf = new myPDF('P', 'mm', 'A4');  // デフォルト単位はmmに指定
$pdf->Ln(30);               // 単位指定されていないのでmm単位に→30mm
$pdf->SetFontSize(12);      // フォントサイズは単位指定無しだと
                            // デフォルト単位に関係なくptに→12pt
$pdf->Ln('3cm');            // 単位指定されているので3cm→30mmと同義
$pdf->SetFontSize('5mm');   // フォントサイズでも単位指定すれば5mm→14.173228346457pt
$pdf->SetFontSize2(5);      // 5mm→14.173228346457pt
                            // フォントサイズでもデフォルト単位が有効なメソッドもあります

文字エンコーディング

PDFの文字エンコーディングには、コンテンツに表示される部分にはShift_JISを採用し※2、ドキュメント情報の部分にはutf-8を使用しています。それらは内部で自動的に文字エンコーディング変換されるため、そのまま文字列を渡すことが出来ます。

ただしURLまたはAddLink()メソッドにより返された識別子を指定する引数は文字エンコーディング変換しません。

※2 Multi-Byte fPDF(mbfpdf.php)の文字幅計算の仕様のためShift_JIS固定です。

カラーコード指定

fPDFで色を指定する方法は2つありました。第1引数~第3引数に赤・緑・青のレベルを0~255の数値で指定する方法と、第1引数だけにグレイスケールのレベルを0~255の数値で指定する方法です。

myPDFではさらに色を指定する方法が増えました。第1引数でカラーネームを指定する方法と、同じく第1引数でWebカラーコードを指定する方法です。

利用できるカラーネーム 対応するWebカラーコード
'aqua'
'black'
'blue'
'fuchsia'
'gray'
'green'
'lime'
'maroon'
'navy'
'olive'
'purple'
'red'
'silver'
'teal'
'white'
'yellow'
'#00FFFF'
'#000000'
'#0000FF'
'#FF00FF'
'#808080'
'#008000'
'#00FF00'
'#800000'
'#000080'
'#808000'
'#800080'
'#FF0000'
'#C0C0C0'
'#008080'
'#FFFFFF'
'#FFFF00'

myPDFで独自に追加されたメソッド等

myPDF

myPDF ― コンストラクタ

説明

resource new myPDF ( [string $orientation [, string $unit [, string $format]]] )
resource new myPDF ( [string $orientation [, string $unit [, array $papersize]]] )
パラメータに基づき、新規にPDFオブジェクトを作成します。myPDFでPDFを操作するにはこのオブジェクトを使用します。

パラメータ

orientation
デフォルトのページの方向を指定できます。 デフォルトの値は'P'です。
unit
デフォルトの寸法単位を指定できます。 ポイントは1/72インチと同じで、およそ0.35mm(1インチ=2.54cm換算)です。ポイントは印刷物の世界では一般的な寸法です。
デフォルトの値はmmです。
format
ページの用紙サイズです。'A4'や'B5'など、JIS規格のキーワードを指定できます。
JIS A JIS B その他
'A0'
'A1'
'A2'
'A3'
'A4'
'A5'
'A6'
'A7'
'A8'
'A9'
'A10'
'B0'
'B1'
'B2'
'B3'
'B4'
'B5'
'B6'
'B7'
'B8'
'B9'
'B10'
'letter'
'regal'
papersize
ページの用紙サイズです。カスタムした用紙サイズを指定できます。幅(width)を0番目の要素に、高さ(height)を1番目の要素にもつ配列をパラメータに渡します。
単位指定が可能です。

返り値

成功時にはオブジェクトを返し、エラー時は不明です。

CountMultiCell

CountMultiCell ― 文字列の行数を取得する

説明

int CountMultiCell ( mixed $width, string $text [, $align] )
現在のフォントサイズで、指定した文字列を指定した幅で出力しようとする場合、何行にわたるかを計算します。

パラメータ

width
セルの幅を指定します。単位指定が可能です。
text
表示しようとする文字列を指定します。文字エンコーディングは自動的に変換されます。
align
テキストの横位置を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は'L'(左寄せ)です。

返り値

計算された行数を返します。

ExCell

ExCell ― 指定したセルに収まるように複数行の文字列を出力する

説明

ExCell ( mixed $width, mixed $height, string $text [, mixed $border [, string $align [, string $valign [, int $fill]]]] )
指定したセルに収まるように複数行のセルを表示します。改行文字までをセル中での1行として扱われます。1行ごとにセルの幅や高さを超えないようにフォントサイズが自動計算されますので、各行ごとにフォントサイズが変わります。

パラメータ

width
セルの幅を指定します。単位指定が可能です。
height
セルの高さを指定します。単位指定が可能です。
text
表示する文字列を指定します。文字エンコーディングは自動的に変換されます。
border
表の周りの境界線(ボーダー)が必要なら指定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0です。
align
テキストの横位置を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は''(左寄せ)です。
valign
テキストの縦位置を設定します。 デフォルトの値は'J'(均等)です。
fill
セルの背景色を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0(透過)です。

ExCellA

ExCellA ― 指定したセルに収まるように複数行の文字列を出力する

説明

ExCellA ( mixed $width, mixed $height, string $text [, mixed $border [, string $align [, string $valign [, int $fill]]]] )
指定したセルに収まるように複数行のセルを表示します。フォントサイズの自動計算の方法が違うため、全ての行で同じフォントサイズになること以外はExCell()と同じです。

パラメータ

width
セルの幅を指定します。単位指定が可能です。
height
セルの高さを指定します。単位指定が可能です。
text
表示する文字列を指定します。文字エンコーディングは自動的に変換されます。
border
表の周りの境界線(ボーダー)が必要なら指定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0です。
align
テキストの横位置を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は''(左寄せ)です。
valign
テキストの縦位置を設定します。 デフォルトの値は'J'(均等)です。
fill
セルの背景色を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0(透過)です。

FitCell

FitCell ― 指定した幅に収まるように文字列を出力する

説明

FitCell ( mixed $width, mixed $lineheight, string $text [, mixed $border [, int $ln [, string $align [, mixed $fill [, mixed $link]]]]] )
指定した幅に収まるように1行のみのセルを表示します。セルの幅を超えないようにフォントサイズが自動計算されること以外はCell()と同じです。

パラメータ

width
セルの幅を指定します。単位指定が可能です。
lineheight
セルの高さ(=1行の高さ)を指定します。単位指定が可能です。
text
表示する文字列を指定します。文字エンコーディングは自動的に変換されます。
border
表の周りの境界線(ボーダー)が必要なら指定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0です。
ln
表示した後のカレント位置を移動を指定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0です。
align
テキストの位置を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は''(左寄せ)です。
fill
セルの背景色を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0(透過)です。
link
URLかAddLink()によって返された識別子を指定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は''(なし)です。

FitMultiCell

FitMultiCell ― 指定したセルに収まるように複数行の文字列を出力する

説明

FitMultiCell ( mixed $width, mixed $height, string $text [, mixed $border [, string $align [, int $fill]]] )
指定したセルに収まるように複数行のセルを表示します。セルの幅や高さを超えないようにフォントサイズが自動計算されること以外はMBMultiCell()MultiCell()と同じです。

パラメータ

width
セルの幅を指定します。単位指定が可能です。
height
セルの高さを指定します。単位指定が可能です。
text
表示する文字列を指定します。文字エンコーディングは自動的に変換されます。
border
表の周りの境界線(ボーダー)が必要なら指定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0です。
align
テキストの位置を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は''(左寄せ)です。
fill
セルの背景色を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は0(透過)です。

FittedFontSize

FittedFontSize ― 自動計算されたフォントサイズを取得する

説明

float FittedFontSize ()
直前に実行されたFitCell()FitMultiCell()ExCell()ExCellA()で決定されたフォントサイズをデフォルト単位で取得します。

返り値

自動計算されたフォントサイズをデフォルト単位で返します。

GetFontSize

GetFontSize ― 現在のフォントサイズを取得する

説明

float GetFontSize ()
現在のフォントサイズをpt単位で取得します。

返り値

現在のフォントサイズをpt単位で返します。

GetFontSize2

GetFontSize2 ― 現在のフォントサイズを取得する

説明

float GetFontSize2 ()
現在のフォントサイズをデフォルト単位で取得します。

返り値

現在のフォントサイズをデフォルト単位で返します。

GetPaperHeight

GetPaperHeight ― 現在の用紙の高さを取得する

説明

float GetPaperHeight ()
現在の用紙の高さをデフォルト単位で取得します。用紙の向き(縦・横)が反映されます。

返り値

現在の用紙の高さをデフォルト単位で返します。

GetPaperWidth

GetPaperWidth ― 現在の用紙の幅を取得する

説明

float GetPaperWidth ()
現在の用紙の幅をデフォルト単位で取得します。用紙の向き(縦・横)が反映されます。

返り値

現在の用紙の幅をデフォルト単位で返します。

GetXY

GetXY ― 現在の座標を得る

説明

array GetXY ()
カレント(現在の)座標を配列で返します。

返り値

2つの要素をもつ配列を返します。0番目および1番目の要素は、それぞれX座標とY座標を表します。

参考

SetCellMargin

SetCellMargin ― セルのマージンを設定する

説明

SetCellMargin ( mixed $margin )
Cell()などにおけるセルのマージン(余白)の量を設定します。

パラメータ

margin
セルのマージン(余白)の量を設定します。デフォルトでは1mmが指定されています。単位指定が可能です。

SetFont2

SetFont2 ― フォントを設定する

説明

SetFont2 ( string $family [, string $style [, mixed $size]] )
フォントを設定します。SetFont()との違いは、フォントサイズ指定単位がptではなくデフォルト単位になっていることです。単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetFontSize2

SetFontSize2 ― フォントサイズを設定する

説明

SetFontSize2 ( mixed $size )
フォントサイズを設定します。SetFontSize()との違いは、フォントサイズ指定単位がptではなくデフォルト単位になっていることです。単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetXY_a

SetXY_a ― 配列で座標を設定する

説明

SetXY_a ( array $position )
カレント(現在の)x座標、y座標を配列で設定します。もしマイナスの値が指定された場合、現在のページの右端、下端からの相対座標になります。

パラメータ

position
X座標を0番目の要素に、Y座標を1番目の要素にもつ配列を指定します。単位指定が可能です。

参考

myPDFでオーバーロードされたメソッド等

AddMBFont

AddMBFont ― マルチバイトフォントを定義する

説明

AddMBFont ( [string $family] )
詳細はmbfPDFのマニュアルを参照して下さい。

AliasNbPages

AliasNbPages ― 総ページ数のエイリアス文字列を定義する

説明

AliasNbPages ( [string $alias] )
ここで定義したエイリアス文字列を、コンテンツ中の総ページ数を表示したい場所に記述しておくと、PDFドキュメントの総ページ数が決定した際に自動的に総ページ数に置き換えられるようになります。詳細はfPDFのマニュアルを参照して下さい。

パラメータ

alias
後で総ページ数に置き換えられるべきエイリアス文字列を指定します。文字エンコーディングは自動的に変換されます。

Cell

Cell ― 表(セル)を表示する

説明

Cell ( mixed $width, mixed $lineheight, string $text [, mixed $border [, int $ln [, string $align [, mixed $fill [, mixed $link]]]]] )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

GetStringWidth

GetStringWidth ― 文字列の長さを計算する

説明

GetStringWidth ( [string $text] )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

Image

Image ― 画像を出力する

説明

Image ( string $file, mixed $x, mixed $y [, mixed $width [, mixed $height [, string $type [, mixed $link]]]] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

Line

Line ― 線を描画する

説明

Line ( mixed $x1, mixed $y1, mixed $x2, mixed $y2 )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

Link

Link ― リンクをセットする

説明

Link ( mixed $x, mixed $y, mixed $width, mixed $height, mixed $link )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

Ln

Ln ― 改行を出力する

説明

Ln ( [mixed $lineheight] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

MultiCell

MultiCell ― 表(セル)を表示する

説明

MultiCell ( mixed $width, mixed $height, string $text [, mixed $border [, int $ln [, string $align [, mixed $fill]]]] )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

Rect

Rect ― 長方形を描画する

説明

Rect ( mixed $x1, mixed $y1, mixed $x2, mixed $y2 [, string $style] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetAuthor

SetAuthor ― ドキュメントの製作者を設定する

説明

SetAuthor ( string $author )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

SetAutoPageBreak

SetAutoPageBreak ― 自動改ページモードを設定する

説明

SetAutoPageBreak ( boolean $auto [, mixed $margin] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetCreator

SetCreator ― ドキュメントの製作環境を設定する

説明

SetCreator ( string $creator )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

SetDrawColor

SetDrawColor ― 線や枠の描画色を設定する

説明

SetDrawColor ( mixed $color )
SetDrawColor ( int $r, int $g, int $b )
カラーコードおよびRGBの指定ができます。詳細はfPDFのマニュアルを参照して下さい。

SetFillColor

SetFillColor ― 背景色を設定する

説明

SetFillColor ( mixed $color )
SetFillColor ( int $r, int $g, int $b )
カラーコードおよびRGBの指定ができます。詳細はfPDFのマニュアルを参照して下さい。

SetFont

SetFont ― フォントを設定する

説明

SetFont ( string $family [, string $style [, mixed $size]] )
寸法指定には単位指定が可能です。ただし寸法指定無しはpt単位となります。詳細はfPDFのマニュアルを参照して下さい。

SetFontSize

SetFontSize ― フォントサイズを設定する

説明

SetFontSize ( mixed $size )
寸法指定には単位指定が可能です。ただし寸法指定無しはpt単位となります。詳細はfPDFのマニュアルを参照して下さい。

SetKeywords

SetKeywords ― ドキュメントに関連したキーワードを設定する

説明

SetKeywords ( string $keywords )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

SetLeftMargin

SetLeftMargin ― ページの左マージンを指定

説明

SetLeftMargin ( mixed $margin )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetLineWidth

SetLineWidth ― 線の幅を設定する

説明

SetLineWidth ( mixed $width )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetMargins

SetMargins ― ページのマージンを指定

説明

SetMargins ( mixed $left, mixed $top[, mixed $right] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetRightMargin

SetRightMargin ― ページの右マージンを指定

説明

SetRightMargin ( mixed $margin )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetSubject

SetSubject ― ドキュメントの主題(Subject)を設定する

説明

SetSubject ( string $subject )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

SetFillColor

SetTextColor ― テキストの描画色を設定する

説明

SetTextColor ( mixed $color )
SetTextColor ( int $r, int $g, int $b )
カラーコードおよびRGBの指定ができます。詳細はfPDFのマニュアルを参照して下さい。

SetTitle

SetTitle ― ドキュメントのタイトルを設定する

説明

SetTitle ( string $title )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

SetTopMargin

SetTopMargin ― ページの上マージンを指定

説明

SetTopMargin ( mixed $margin )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetX

SetX ― カレント(現在の)x座標を設定する

説明

SetX ( mixed $x )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetXY

SetXY ― カレント(現在の)x座標、y座標を設定する

説明

SetXY ( mixed $x, mixed $y )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

SetY

SetY ― カレント(現在の)y座標を設定する

説明

SetY ( mixed $y )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。

Text

Text ― 文字列を出力する

説明

Text ( mixed $x, mixed $y, string $text )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

Write

Write ― 文章を整形出力する

説明

Write ( mixed $height, string $text [, mixed $link] )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。

ライセンス

このソフトウェアは良心のもとにフリーウェアです。