Kategorie-Archiv: .pdf ausgabe

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 „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.