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 ― コンストラクタ
説明
resource new myPDF ( [string $orientation [, string $unit [, string $format]]] )
resource new myPDF ( [string $orientation [, string $unit [, array $papersize]]] )
パラメータに基づき、新規にPDFオブジェクトを作成します。myPDFでPDFを操作するにはこのオブジェクトを使用します。
パラメータ
orientation
デフォルトのページの方向を指定できます。
- 'P' または 'Portrait' (縦)
- 'L' または 'Landscape' (横)
デフォルトの値は'P'です。
unit
デフォルトの寸法単位を指定できます。
- 'pt' ポイント(point)
- 'mm' ミリ(millimeter)
- 'cm' センチ(centimeter)
- 'in' インチ(inch)
- 'inch' インチ(inch)
ポイントは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 ― 文字列の行数を取得する
説明
int CountMultiCell ( mixed $width, string $text [, $align] )
現在のフォントサイズで、指定した文字列を指定した幅で出力しようとする場合、何行にわたるかを計算します。
パラメータ
width
セルの幅を指定します。単位指定が可能です。
text
表示しようとする文字列を指定します。文字エンコーディングは自動的に変換されます。
align
テキストの横位置を設定します。詳細はfPDFのマニュアルを参照して下さい。デフォルトの値は'L'(左寄せ)です。
返り値
計算された行数を返します。
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 ( 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 ( 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 ( 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 ― 自動計算されたフォントサイズを取得する
説明
float FittedFontSize ()
直前に実行された
FitCell()、
FitMultiCell()、
ExCell()、
ExCellA()で決定されたフォントサイズをデフォルト単位で取得します。
返り値
自動計算されたフォントサイズをデフォルト単位で返します。
GetFontSize ― 現在のフォントサイズを取得する
説明
float GetFontSize ()
現在のフォントサイズをpt単位で取得します。
返り値
現在のフォントサイズをpt単位で返します。
GetFontSize2 ― 現在のフォントサイズを取得する
説明
float GetFontSize2 ()
現在のフォントサイズをデフォルト単位で取得します。
返り値
現在のフォントサイズをデフォルト単位で返します。
GetPaperHeight ― 現在の用紙の高さを取得する
説明
float GetPaperHeight ()
現在の用紙の高さをデフォルト単位で取得します。用紙の向き(縦・横)が反映されます。
返り値
現在の用紙の高さをデフォルト単位で返します。
GetPaperWidth ― 現在の用紙の幅を取得する
説明
float GetPaperWidth ()
現在の用紙の幅をデフォルト単位で取得します。用紙の向き(縦・横)が反映されます。
返り値
現在の用紙の幅をデフォルト単位で返します。
GetXY ― 現在の座標を得る
説明
array GetXY ()
カレント(現在の)座標を配列で返します。
返り値
2つの要素をもつ配列を返します。0番目および1番目の要素は、それぞれX座標とY座標を表します。
SetCellMargin ― セルのマージンを設定する
説明
SetCellMargin ( mixed $margin )
Cell()などにおけるセルのマージン(余白)の量を設定します。
パラメータ
margin
セルのマージン(余白)の量を設定します。デフォルトでは1mmが指定されています。単位指定が可能です。
SetFont2 ― フォントを設定する
説明
SetFont2 ( string $family [, string $style [, mixed $size]] )
フォントを設定します。
SetFont()との違いは、フォントサイズ指定単位がptではなくデフォルト単位になっていることです。単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetFontSize2 ― フォントサイズを設定する
説明
SetFontSize2 ( mixed $size )
フォントサイズを設定します。
SetFontSize()との違いは、フォントサイズ指定単位がptではなくデフォルト単位になっていることです。単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetXY_a ― 配列で座標を設定する
説明
SetXY_a ( array $position )
カレント(現在の)x座標、y座標を配列で設定します。もしマイナスの値が指定された場合、現在のページの右端、下端からの相対座標になります。
パラメータ
position
X座標を0番目の要素に、Y座標を1番目の要素にもつ配列を指定します。単位指定が可能です。
AddMBFont ― マルチバイトフォントを定義する
説明
AddMBFont ( [string $family] )
詳細はmbfPDFのマニュアルを参照して下さい。
AliasNbPages ― 総ページ数のエイリアス文字列を定義する
説明
AliasNbPages ( [string $alias] )
ここで定義したエイリアス文字列を、コンテンツ中の総ページ数を表示したい場所に記述しておくと、PDFドキュメントの総ページ数が決定した際に自動的に総ページ数に置き換えられるようになります。詳細はfPDFのマニュアルを参照して下さい。
パラメータ
alias
後で総ページ数に置き換えられるべきエイリアス文字列を指定します。文字エンコーディングは自動的に変換されます。
Cell ― 表(セル)を表示する
説明
Cell ( mixed $width, mixed $lineheight, string $text [, mixed $border [, int $ln [, string $align [, mixed $fill [, mixed $link]]]]] )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
GetStringWidth ― 文字列の長さを計算する
説明
GetStringWidth ( [string $text] )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
Image ― 画像を出力する
説明
Image ( string $file, mixed $x, mixed $y [, mixed $width [, mixed $height [, string $type [, mixed $link]]]] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
Line ― 線を描画する
説明
Line ( mixed $x1, mixed $y1, mixed $x2, mixed $y2 )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
Link ― リンクをセットする
説明
Link ( mixed $x, mixed $y, mixed $width, mixed $height, mixed $link )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
Ln ― 改行を出力する
説明
Ln ( [mixed $lineheight] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
MultiCell ― 表(セル)を表示する
説明
MultiCell ( mixed $width, mixed $height, string $text [, mixed $border [, int $ln [, string $align [, mixed $fill]]]] )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
Rect ― 長方形を描画する
説明
Rect ( mixed $x1, mixed $y1, mixed $x2, mixed $y2 [, string $style] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetAuthor ― ドキュメントの製作者を設定する
説明
SetAuthor ( string $author )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
SetAutoPageBreak ― 自動改ページモードを設定する
説明
SetAutoPageBreak ( boolean $auto [, mixed $margin] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetCreator ― ドキュメントの製作環境を設定する
説明
SetCreator ( string $creator )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
SetDrawColor ― 線や枠の描画色を設定する
説明
SetDrawColor ( mixed $color )
SetDrawColor ( int $r, int $g, int $b )
カラーコードおよびRGBの指定ができます。詳細はfPDFのマニュアルを参照して下さい。
SetFillColor ― 背景色を設定する
説明
SetFillColor ( mixed $color )
SetFillColor ( int $r, int $g, int $b )
カラーコードおよびRGBの指定ができます。詳細はfPDFのマニュアルを参照して下さい。
SetFont ― フォントを設定する
説明
SetFont ( string $family [, string $style [, mixed $size]] )
寸法指定には単位指定が可能です。ただし寸法指定無しはpt単位となります。詳細はfPDFのマニュアルを参照して下さい。
SetFontSize ― フォントサイズを設定する
説明
SetFontSize ( mixed $size )
寸法指定には単位指定が可能です。ただし寸法指定無しはpt単位となります。詳細はfPDFのマニュアルを参照して下さい。
SetKeywords ― ドキュメントに関連したキーワードを設定する
説明
SetKeywords ( string $keywords )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
SetLeftMargin ― ページの左マージンを指定
説明
SetLeftMargin ( mixed $margin )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetLineWidth ― 線の幅を設定する
説明
SetLineWidth ( mixed $width )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetMargins ― ページのマージンを指定
説明
SetMargins ( mixed $left, mixed $top[, mixed $right] )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetRightMargin ― ページの右マージンを指定
説明
SetRightMargin ( mixed $margin )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetSubject ― ドキュメントの主題(Subject)を設定する
説明
SetSubject ( string $subject )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
SetTextColor ― テキストの描画色を設定する
説明
SetTextColor ( mixed $color )
SetTextColor ( int $r, int $g, int $b )
カラーコードおよびRGBの指定ができます。詳細はfPDFのマニュアルを参照して下さい。
SetTitle ― ドキュメントのタイトルを設定する
説明
SetTitle ( string $title )
文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
SetTopMargin ― ページの上マージンを指定
説明
SetTopMargin ( mixed $margin )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetX ― カレント(現在の)x座標を設定する
説明
SetX ( mixed $x )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetXY ― カレント(現在の)x座標、y座標を設定する
説明
SetXY ( mixed $x, mixed $y )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
SetY ― カレント(現在の)y座標を設定する
説明
SetY ( mixed $y )
寸法指定には単位指定が可能です。詳細はfPDFのマニュアルを参照して下さい。
Text ― 文字列を出力する
説明
Text ( mixed $x, mixed $y, string $text )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
Write ― 文章を整形出力する
説明
Write ( mixed $height, string $text [, mixed $link] )
寸法指定には単位指定が可能です。文字エンコーディングは自動的に変換されます。詳細はfPDFのマニュアルを参照して下さい。
このソフトウェアは良心のもとにフリーウェアです。