Es gibt verschiedene PHP Klassen resp. Libraries im Internet, die es ermöglichen PDF zu erstellen. Ich habe mich für FPDF entschieden, weil es einfach anwendbar ist und es mir doch sehr viel Freiraum gibt, um mein Dokument so zu gestalten wie ich es will. Des weiteren sind die Funktionen sehr gut beschrieben und das Tutorial erlaubt es einem, rasch das ganze zu erlernen.
Nun, ich habe schon seit längerem nicht mehr damit gearbeitet. Diese Woche habe ich die Anfrage erhalten, ein bestehendes Dokument (eine Rechnung, die per Email an die Kunden versendet werden soll (Attachment im PDF-Format)), ein wenig anzupassen. Der Adressblock sollte um 1 cm mehr nach rechts und um 0.5 cm nach unten verschoben werden. Folgender Teil des Scripts ist für die Ausgabe und Positionierung des Empfängerblocks verantwortlich:
//—————–
$pdf->Ln(14);
//—————–
$postadresse_inv = explode(”\n”, $postadresse);
$postadresse_inv_1 = $postadresse_inv[0];
$postadresse_inv_2 = $postadresse_inv[1];
$postadresse_inv_3 = $postadresse_inv[2];
$postadresse_inv_4 = $postadresse_inv[3];
$pdf->Cell(90, 4, “”, 0, 0, “L”);
$pdf->MultiCell(85, 4, $postadresse, 0,1, “L”);
//———————
Der erste Teil des Script definiert den Abstand vom vorher erstellten Objekt auf dem Dokument. Dabei gibt man bei der Funktion LN an, wie viel Abstand gemacht werden soll. Leider habe ich dazumals nicht definiert, dass ich mit metrischen Masseinheit arbeite (bestimmt man zu Beginn des Dokumentes ($pdf=new FPDF();). Darum muss ich da ein wenig umrechnen. Um den Adressblock nun um 0.5 cm mehr nach unten zu verschieben, muss ich die Zahl 14 um 3.5 erhöhen, sprich mit 17.5 ersetzen.
Der zweite Bereich des Scripts erstellt die Adresse. Das hat eigentlich nichts mit dem erstellen des PDF zu tun.
Im dritten Teil wird die Adresse ausgegeben. Als erstes wird eine leere Zelle erstellt, die dafür verantwortlich ist, den Einzug von links zu ermöglichen. In der zweiten Zelle wird dann die Adresse angezeigt. Übrigens, Cell wird verwendet um eine einzeilige Zelle zu erstellen, Multicell um eine Zelle zu erstellen, die mehrere Zeilen hoch ist. Um nun den Adressblock um 1 cm mehr nach rechts zu verschieben müssen wir bei der ersten Zelle (die den Einschub ja definiert) 6 Punkte dazu tun, bei der zweiten Zelle 6 abziehen:
//—————–
$pdf->Ln(17.5);
//—————–
$postadresse_inv = explode(”\n”, $postadresse);
$postadresse_inv_1 = $postadresse_inv[0];
$postadresse_inv_2 = $postadresse_inv[1];
$postadresse_inv_3 = $postadresse_inv[2];
$postadresse_inv_4 = $postadresse_inv[3];
$pdf->Cell(96, 4, “”, 0, 0, “L”);
$pdf->MultiCell(79, 4, $postadresse, 0,1, “L”);
//———————