Tutorial 3 - Zeilenumbrüche und Farben

Zeilenumbrüche und Farben anwenden

Weiter geht es mit einem Beispiel für die Ausgabe von ausgerichteten Absätzen und die Verwendung von Farben.

<?php

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

class PDF extends FPDF
{
  function Header()
  {
    global {"$"}title;
    // Arial Fett 15
    {"$"}this->SetFont('Arial','B',15);
    // Berechne Breite des Titels und die Position
    {"$"}w={"$"}this->GetStringWidth({"$"}title)+6;
    {"$"}this->SetX((210-{"$"}w)/2);
    // Farbe von Rahmen, Hintergrund und Text
    {"$"}this->SetDrawColor(0,80,180);
    {"$"}this->SetFillColor(230,230,0);
    {"$"}this->SetTextColor(220,50,50);
    // Dicke des Rahmens (1 mm)
    {"$"}this->SetLineWidth(1);
    // Titel
    {"$"}this->Cell({"$"}w,9,{"$"}title,1,1,'C',1);
    // Zeilenumbruch
    {"$"}this->Ln(10);
  }

  function Footer()
  {
    // Position 1.5cm von unten
    {"$"}this->SetY(-15);
    // Arial Kursiv 8
    {"$"}this->SetFont('Arial','I',8);
    // Text in Grau
    {"$"}this->SetTextColor(128);
    // Ausgabe Seitenzahl
    {"$"}this->Cell(0,10,'Seite '.{"$"}this->PageNo(),0,0,'C');
  }

  function ChapterTitle({"$"}num,{"$"}label)
  {
    // Arial 12
    {"$"}this->SetFont('Arial','',12);
    // Hintergrundfarbe
    {"$"}this->SetFillColor(200,220,255);
    // Titel
    {"$"}this->Cell(0,6,"Kapitel {"$"}num : {"$"}label",0,1,'L',1);
    // Zeilenumbruch
    {"$"}this->Ln(4);
  }

  function ChapterBody({"$"}file)
  {
    // Testdatei einlesen
    {"$"}f=fopen({"$"}file,'r');
    {"$"}txt=fread({"$"}f,filesize({"$"}file));
    fclose({"$"}f);
    // Times 12
    {"$"}this->SetFont('Times','',12);
    // Ausgerichteten Text ausgeben
    {"$"}this->MultiCell(0,5,{"$"}txt);
    // Zeilenumbruch
    {"$"}this->Ln();
    // Kursiv
    {"$"}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();
{"$"}title='20000 Meilen unter dem Meer';
{"$"}pdf->SetTitle({"$"}title);
{"$"}pdf->SetAuthor('Jules Verne');
{"$"}pdf->PrintChapter(1,'Das erste Kapitel','20k_c1.txt');
{"$"}pdf->PrintChapter(2,'Das zweite Kapitel','20k_c2.txt');
{"$"}pdf->Output();

?>

Die Methode GetStringWidth() ermöglicht es die Breite einer Zeichenfolge unter Berücksichtigung der aktuell festgelegten Schriftart zu ermitteln und wird hier verwendet um die Breite des Rahmens um den Titel und die Position des Titels zu berechnen. Die Farben werden definiert (mittels SetDrawColor(), SetFillColor() und SetTextColor()) und die Dicke der Linie wird mittels SetLineWidth() auf 1 mm festgelegt (entgegen dem Standardwert von 0.2). Abschließend wird die Zelle ausgegeben (über den letzten Parameter mit dem Wert 1 wird festgelegt dass der Hintergrund gefüllt werden soll).

Die Methode um Absätze auszugeben ist MultiCell(). Jedes Mal wenn eine Zeile das rechte äußere Ende der Zelle erreicht oder ein Zeilenumbruch gefordert wird ("n") wird ein Zeilenumbruch durchgeführt und automatisch eine neue Zelle unterhalb der aktuellen erzeugt. Der Text wird standardmäßig ausgerichtet.

Zwei Dokumenteigenschaften werden definiert: Dokumenttitel (SetTitle()) und Autor (SetAuthor()). Dokumenteigenschaften können auf zwei Arten angezeigt werden. Nachdem das Dokument im Adobe Reader geöffnet wurde können die Dokumenteigenschaften unter "Datei > Dokumenteigenschaften", oder beim Öffnen mit dem Adobe Reader Plug-In (bsp. im IE) über "Rechtspfeil über der rechten Scroll-Leiste > Dokumenteigenschaften" aufgerufen werden.

Zurück

An Error Occurred:Internal Server Error

Oops! An Error Occurred

The server returned a "500Internal Server Error".

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.