1274245684 FPDFを利用してPHPからPDFファイルを作成しています。


「文字、画像、文字」という表示がしたくて以下のそうなコードを書いたのですが、
添付画像の通り、文字が画像に被さってしまいます。
画像の後に改行されて文字が表示されるにはどうすればいいのでしょうか?

$pdf = new MBFPDF();
$pdf->AddMBFont(GOTHIC,'SJIS');
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont(GOTHIC,'',12);
$pdf->Write(12,"あいうえお");
$pdf->Ln();
$y = $pdf->getY();
$pdf->Image('Sunset.jpg', 10, $y, 100,0);
$pdf->Ln();
$pdf->Write(12,"かきくけこ");
$pdf->Output();

FPDFのバージョンは1.6です。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/19 14:08:05
  • 終了:2010/05/26 14:10:03

回答(1件)

id:gekikawa No.1

gekikawa回答回数110ベストアンサー獲得回数112010/05/19 20:42:08

ポイント60pt

$pdf->Image('Sunset.jpg', 10, $y, 100,0);

の部分ですがimageメソッドの引数が(ファイル名, 画像のX座標, 画像のy座標, 画像の幅, 画像の高さ)

となるとするとサンプル画像のように日没風景が出ない事になってしまいますが...「100,0」は「100.0」でしょうか?

もしこうだとすると...

http://www.phpbook.jp/fpdf/text/index3.html


ここに解説されている関数で「現在の位置」を画像より下になるように

すれば良いのでしょう。


$pdf->Write(12,"かきくけこ");

の前の行あたりに

$height = (画像の高さ);

$pdf->SetY($height);


を入れれば良いのですね。

ただ、ここで画像の高さと書いた部分ですが、FPDFではデフォルトで

サイズの単位が「mm」という事と、画像の横幅は100「mm」と指定されていることから

list($img_w, $img_h) = getimagesize('Sunset.jpg');

$height = 100 * $img_h / $img_w;

とやって$heightを求めてみてはどうでしょう?

結局

$pdf->Write(12,"かきくけこ");

の前の行に

list($img_w, $img_h) = getimagesize('Sunset.jpg');

$height = 100 * $img_h / $img_w;

$pdf->SetY($height);

を追加する

でどうでしょうか?

id:k27w

やはりその方法しかありませんか。簡単に改行できるコードがあると思っていました。

2010/05/19 22:00:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません