Archiv für den Monat: November 2015

PHP fpdf Test schreiben mit wirte() um Umlauten

Die letzte Beitrag beschrieben Methode cell ermöglich wesentlich mehr Einstellungen als wirte() hat aber den Nachteil, dass Text der über die Breite der Zelle hinaus geht einfach abgeschnitten ist.

Mit wirte() können weniger Einstellungen vorgenommen werden, dafür der Text am Ende der Zeile automatisch umgebrochen.

$temp = „Dieser Text ist so lange, dass er nicht in einer einzigen Zeile Platz hat. Spätestens jetzt aber. Allerspätestens aber jetzt.“;
$pdf->Write(15, $temp);

Obige Zeilen weisen zuerst der Variable $temp einen String zu. Dieser wird dann über die Write-Funktion ausgegeben. Der erste Parameter gibt dabei die Höhe der Zeile an.

Genaueres hier.

Die bisherigen Ausgaben können je nach Browser und Server noch Probleme mit Umlauten haben, sodass z.B. Ü,ö oder ß nicht richtig dargestellt werden. Das wird verhindert indem der auszugebende String zuerst mit:

$temp = utf8_decode($temp);

in das richtige Format umgewandelt wird. Danach sollten die gängigen deutschen Umlaute richtig dargestellt werden.

PHP fpdf Schrifteinstellungen und Cell-Ausgaben

Im letzten Beitrag behandelte ich folgendes Beispiel:

  1. $pdf=new FPDF();
  2. $pdf->AddPage();
  3. $pdf->SetFont(‚Arial‘,’B‘,16);
  4. $pdf->Cell(40,10,’Hallo Welt‘);
  5. ob_start();
  6. $pdf->Output();
  7. ob_end_flush();

Dort wurde auch näher auf die Erzeugung des Objekts und die Ausgabemöglichkeiten eingegangen. In diesem Beitrag werden die Zeilen 3 und 4 mit den Fuktionen „SetFont“ und „Cell“ genauer erklärt.

Die SetFont Methode

Der SetFont Methode können bis zu 3 Parameter übergeben werden.

Der erste legt die Schriftart fest und muss angegeben werden. Möglich sind z.B. Courier, Arial oder Times. Im Unterverzeichnis „font“ der FPDF Bibliothek sind die möglichen Schriftarten als .php Dateien zu finden.

Über den zweiten (optionalen) Parameter kann festgelegt werden ob die Schrift fett („B“), kursiv („I“), unterstrichen („U“) oder normal („“) dargestellt werden soll.

Der dritte Parameter legt die Schriftgröße fest, ohne Angabe wird 12 genommen.

Hier gibts mehr Informationen zu SetFont.

Die Cell Methode

Über die Cell Methode kann ein Text ins .pdf Dokument geschrieben werden.

Z.B. mit $pdf->Cell(40,10,’Hallo Welt‘);

Nur der erste Parameter ist verpflichtende. Er gibt die Breite des hinzuzufügenden Blocks (in der Einheit, die im Konstruktor eingestellt wurde – Default Millimeter) an. Wird 0 übergeben, geht der Block über die ganze Breite.

Mit dem zweiten Parameter wird die Höhe angegeben.

Mit dem 3ten Parameter kann ein String übergeben werden, der dann in diesen Block eingefügt wird. Dabei wird Schrift wie mit SetFont eingestellt gewählt. Achtung: Ist der Text länger als der Block wird er einfach abgeschnitten.

Es gibt noch einige weite Parameter, z.B. wird mit:

$pdf->Cell(40,10,“Hallo Welt2″,“B“,1,“R“,0);

Der Text „Hallo Welt2“ in einem 40mm breiten und 10mm hohem Block dargestellt. Dabei wird über „B“ ein Rahmen an der Unterseite des Blocks sichtbar, über „1“ wird ein Zeilenumbruch nach der Zeile erzeugt. Mit „R“ wird der Text im Block rechtsbündig dargestellt und mit „0“ wird der Block intransparent ins Dokument eingefügt. Hier finden sie genauere Informationen zu den einzelnen Parameter.

 

PHP fpdf „Hallo Welt“, Konstruktor und Ausgabe

Im folgenden wird .pdf Dokument erzeugt in dem „Hallo Welt“ steht.

  1. $pdf=new FPDF();
  2. $pdf->AddPage();
  3. $pdf->SetFont(‚Arial‘,’B‘,16);
  4. $pdf->Cell(40,10,’Hallo Welt‘);
  5. ob_start();
  6. $pdf->Output();
  7. ob_end_flush();

Die Zeile 1 erstellt ein Objekt der FPDF Klasse, die im vorherigen Beitrag eingebunden wurde.

Die Zeilen 2 bis 4 erzeugen im .pdf eine leere Seite, stellen eine Schriftgröße ein und fügen die Zeile „Hallo Welt“ hinzu. Die einzelnen Befehle werden später noch behandelt.

Zeile 6 erzeugt, dann das eigentliche Datei und öffnet sie im Browser.

Die Zeilen 5 und 7, aktivieren den temporär den Ausgabepuffer. Je nach Einstellung des Webservers können sie auch weggelassen werden. Bei manchen Serverkonfigurationen führt ein Weglassen jedoch zu einem Fehler.

Achtung Fehlergefahr

Die Programmierung der fpdf Bibliothek ist an einzelnen Stellen nicht so ausgereift wie das bei PHP Standardfunktionen der Fall ist. Lt. fpdf Beschreibung gibt es eine Default-Schriftart und Größe wenn keine Schriftart eingestellt wurde. Praktisch führte bei mir aber das Weglassen des SetFont Aufrufes zu einem nicht validen .pdf Dokument und somit zu einer Fehlermeldung im Browser.

Der Konstruktor

Beim erstellen eines neues fpdf Objektes (Zeile 1) wird automatisch der Konstruktor der fpdf Klasse aufgerufen. Dem Konstruktor können dabei 3 optionale Parameter übergeben werden:

  • orientation mit den Werten „P“ für Hochformat und „L“ für Querformat
  • unit mit der Angabe in welcher Maßeinheit die Längenangaben für dieses Dokument angegeben werden. Möglich sind „pt“ für Punkt, „mm“ für Millimeter, „cm“ für Zentimeter und „in“ für Inch.
  • format für das Format des Dokuments mit den Möglichkeiten „A3“, „A4“, „A5“, „Letter“ und „Legal“

Mit $pdf = new FPDF(); wird der Konstruktor mit den Defaultwerten „Hochformat“ „Millimeter“ und „A4“ aufgerufen.

Der Aufruf:

$pdf = new FPDF(„L“, „cm“, „A3“);

würde ein .pdf Objekt mit den Einstellungen „Querformat“, Längenangaben in „Zentimetern“ und Papierformat „A3“ bewirken.

Hier gibts ausführlicher Informationen zum Konstruktor.

 

Die Ausgabe der .pdf Datei

Mit $pdf->Output(); wird die Datei im Browser Angezeigt.

Der Funktion Output() können zwei Parameter übergeben werden. Der erste gibt den Dateinamen mit .pdf an, z.B. „Report.pdf“.

Der zweite Parameter steuert die Art der Ausgabe und kann folgende Werte haben:

  • „I“ zeigt die Datei im Browser an, klickt der Benutzer auf „Speicher unter“ wird der Angegebene Dateiname als Name vorgeschlagen.
  • „D“ sendet die Datei an den Browser aber ohne sie Anzuzeigen, es wird direkte der Dialog angezeigt, der das Speicher oder das externe öffnen im jeweiligen .pdf Reader ermöglicht.
  • „F“ speichert das Dokument am Server.
  • „S“ liefert das Dokument als Zeichenkette.

Mit $pdf->Output(„Report.pdf“,“D“); öffnet sich im Browser z.B. eine Dialog der entweder das Speichern mit dem Dateinamen „Report.pdf“ oder das öffnen mit dem .pdf Reader vorschlägt.

Hier gibts mehr Informationen zur Output-Fuktion.

 

PHP .pdf Erstellen mit fpdf

Es gibt zahlreiche PHP Bibliotheken mit denen automatisiert Daten als .pdf Datei ausgegeben werden können.

Im folgenden wird die Bibliothek fpdf verwendet. Die Bibliothek ist frei Verfügbar und ist im Internet leicht zu finden. Hier zum Beispiel.

Zur Installation wird die Bibliothek heruntergeladen und entpackt. Dann muss sie auf den benutzen Server hinzugefügt werden. Z.B. indem man im aktuellen Projekt einen Ordner mit Namen fpdf erstellt und einfach alles hineinkopiert. Es muss dann nur noch die Datei fpdf.php mit include eingebunden und die Bibliothek kann benutzt werden.

Wer ein wenig eleganter haben möchte überprüft beim Einbindung im Programm auch gleich ob die Datei vorhanden und einsatzbereit ist. Ein schöner Beispiel Code ist hier zu finden.

Die Bibliothek darf kostenlos verwendet werden.

Hier gehts weiter mit einem einfachen Beispiel.