Top > FPDF > tuto3

Line breaks and colors

段落をプリントする例を見ていきましょう。色も使用して説明します。

<?php
define('FPDF_FONTPATH','font/');
require('fpdf.php');

class PDF extends FPDF
{
function Header()
{
    global $title;

    //Arial bold 15
    $this->SetFont('Arial','B',15);
    //Calculate width of title and position
    $w=$this->GetStringWidth($title)+6;
    $this->SetX((210-$w)/2);
    //Colors of frame, background and text
    $this->SetDrawColor(0,80,180);
    $this->SetFillColor(230,230,0);
    $this->SetTextColor(220,50,50);
    //Thickness of frame (1 mm)
    $this->SetLineWidth(1);
    //Title
    $this->Cell($w,9,$title,1,1,'C',1);
    //Line break
    $this->Ln(10);
}

function Footer()
{
    //Position at 1.5 cm from bottom
    $this->SetY(-15);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //Text color in gray
    $this->SetTextColor(128);
    //Page number
    $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
}

function ChapterTitle($num,$label)
{
    //Arial 12
    $this->SetFont('Arial','',12);
    //Background color
    $this->SetFillColor(200,220,255);
    //Title
    $this->Cell(0,6,"Chapter $num : $label",0,1,'L',1);
    //Line break
    $this->Ln(4);
}

function ChapterBody($file)
{
    //Read text file
    $f=fopen($file,'r');
    $txt=fread($f,filesize($file));
    fclose($f);
    //Times 12
    $this->SetFont('Times','',12);
    //Output justified text
    $this->MultiCell(0,5,$txt);
    //Line break
    $this->Ln();
    //Mention in italics
    $this->SetFont('','I');
    $this->Cell(0,5,'(end of excerpt)');
}

function PrintChapter($num,$title,$file)
{
    $this->AddPage();
    $this->ChapterTitle($num,$title);
    $this->ChapterBody($file);
}
}

$pdf=new PDF();
$pdf->Open();
$title='20000 Leagues Under the Seas';
$pdf->SetTitle($title);
$pdf->SetAuthor('Jules Verne');
$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
$pdf->Output();
?>

GetStringWidth() メソッドは現在のフォントでの文字列の幅を調べることを可能にします。タイトルを囲うフレームの幅と位置を計算するためにここで使用しています。つぎに,色は (SetDrawColor(), SetFillColor(), SetTextColor() で), SetLineWidth() で線の幅を 1 mm (標準の 0.2 に対して) に設定しています。最後に,セルをアウトプットしています (背景を埋める必要があるため最後の引数は 1 を示しています)。

段落をプリントするために使用しているメソッドは MultiCell() です。行がそれぞれセルの右端または改行文字に到達すると,改行されて現在のセルの下に自動的に新しいセルが作成されます。テキストはデフォルトでは揃えられます

二つのドキュメントプロパティーを定義しています。タイトル (SetTitle()) と 著者 (SetAuthor()) です。プロパティーは二つの方法で見ることができます。一つ目は, Acrobat Reader で直接開き,ファイルメニュー,ドキュメントインフォ,一般を選択します。二つ目は,プラグインで利用することができます。右のスクロールバーのすぐ上の三角をクリックしてドキュメントインフォを選択します。


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes