PHP und PDF generieren / bearbeiten
Für PHP gibt es mittlerweile einige Klassen zur PDF Erstellung 2 kostenlose und frei verwendbare sind zum Beispiel die FPDF, oder die Zend_pdf Klassen aus dem Zend Framework. Mit beiden Klassen lassen sich relativ einfach PDFs erstellen. Zend_pdf bietet standardmässig auch schon die Möglichkeit neue Seiten zu einem vorhandenen PDF Dokument hinzu zufügen oder bestehende Seiten zu erweitern. Mit FPDF ist dies mit der Zusatz Klasse FPDI ebenfalls möglich.
Hier jeweils einmal für Zend_pdf und FPDF ein kleines Beispiel:
Zend_pdf:
PHP:
-
<?php
-
// Das Zend Frameworkverzeichnis zum php include Pfad hinzufügen
-
// Die Zend_pdf Klasse includen
-
include_once('../library/Zend/Pdf.php');
-
// PDF Objekt erstellen
-
$pdf = new Zend_Pdf();
-
// Formatierungseinstellungen
-
$style = new Zend_Pdf_Style();
-
$style->setFont(
-
Zend_Pdf_Font::fontWithName(
-
Zend_Pdf_Font::FONT_HELVETICA_BOLD
-
), 16);
-
// Neue Seite im PDF anlegen
-
$pdf->pages[] = ($page1 = $pdf->newPage(Zend_Pdf_Page::SIZE_A4));
-
// Formatierungseinstellungen setzen
-
$page1->setStyle($style);
-
// Text schreiben und Zeichensatz angeben
-
$page1->drawText('Hallo Welt!', 36, 720,'utf-8');
-
// Unser riesen PDF Dokument als test.pdf speichern
-
$pdf->save(’test.pdf’);
-
// PDF Datei laden (test.pdf) verändern und speichern
-
$pdf2 = Zend_Pdf::load(’test.pdf’);
-
// Wieder Formatierungseinstellungen setzen
-
$pdf2->pages[0]->setStyle($style);
-
$pdf2->pages[0]->drawText('2te Zeile', 36, 520);
-
$pdf2->pages[0]->drawText('3te Zeile', 36, 480);
-
$pdf2->pages[0]->drawText('4te Zeile', 36, 440);
-
$pdf2->save('test2.pdf'); // unser Erweitertes PDF Dokument als test2.pdf speichern
-
?>
FPDF:
PHP:
-
<?php
-
// Pfad zum Font Ordner definieren
-
include_once(’./FPDF/fpdf.php’);
-
include_once(’./FPDF/fpdi.php’);
-
$pdf=new FPDF();
-
$pdf->AddPage(); // neue Seite erstellen
-
// Schriftart, Größe und Stil festlegen
-
$pdf->SetFont('Arial','B',16);
-
// Hallo Welt in PDF schreiben
-
$pdf->Cell(40,10,’Hallo Welt!’);
-
$pdf->Output(’test1.pdf’);
-
$pdf->Close();
-
$pdf = new fpdi();
-
$pagecount = $pdf->setSourceFile('test1.pdf');
-
$tplidx = $pdf->ImportPage(1);
-
$pdf->addPage();
-
$pdf->useTemplate($tplidx);
-
$pdf->SetFont('Arial','B',32);
-
$pdf->Cell(40,40,’Hallo Welt2!’);
-
$pdf->Output('test2.pdf');
-
$pdf->closeParsers();
-
?>
Mehr Infos:
vor 2 Jahren
gibts da schon irgendwelche vergleichenden erfahrungen? ich muss mich gerade für eins der beiden entscheiden.
perfekt wäre es wenn man in den vorlagen-pdf-dateien platzhalter unterbringen könnte und der pdf generator diese dann mit daten befüllt – die positionierung wird im template festgelegt.
mit fpdf/fpdi geht das nicht.
vor 2 Jahren
Genau dieses Problem habe ich jetzt auch: Ich habe eine PDF mit Platzhaltern und möchte diese aus PHP heraus ersetzen. Das kann doch nicht so schwer sein. Weiß niemand was?
vor 5 Monaten
Ist zwar schon ein Weilchen her, aber danke für das kleine Tutorial, brauchen einen PDF-Block für concrete5 ;)