Automatisierte Dokumentenerstellung mit PHPWord und PHPPowerPoint – Teil 3
Kommentare

So werden Auszüge und Lückentexte erstellt.

Ausgabe
Nach weiteren Überschriften, Texten und einer Tabelle erfolgt am Ende des Skripts die Ausgabe mit zwei Zeilen Code:
// Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Word_SUS.docx');

Damit steht das Ergebnis unseres Programms in der Datei Word_SUS.docx zur weiteren Bearbeitung zur Verfügung.
Abb. 4: Überschriften 1. und 2. Ebene sowie Tabellen mit Bildern stellen mit PHPWord kein Problem dar
Lückentexte, Arbeiten mit Schablonen
Nachdem im ersten Teil dieses Beitrags ein vollständig neues Dokument erstellt wurde, soll nun nach Schablone gearbeitet werden. PHPWord bietet eine Vorlagenfunktion an, die für die automatisierte Erstellung von Anschreiben und anderen Dokumenten genutzt werden kann. Nach Belieben kann ein Word-Dokument gestaltet und durch Einfügen von Platzhaltern zur Vorlage gewandelt werden. Diese Bearbeitung bedarf keiner Programmierkenntnisse, die Kenntnisse der auszufüllenden Variablennamen reichen aus: Im Word-Dokument sind an vorgesehener Stelle Platzhalter wie ${MEINEVARIABLE} einzufügen. Es gilt dabei nur zu beachten, dass lediglich einfache, einzeilige Ersetzungen durchgeführt werden. Es ist also nicht möglich, eine Tabelle mit mehreren Zeilen oder eine Liste zu füllen. Die Umsetzung eines adäquaten Vorlagensystems mit PHPWord ist die elegante Alternative zu allen anderen, etwa RTF-basierten Ansätzen, da letztere meist nur von Entwicklern in vielen Einzelschritten umgesetzt werden kann. Für unser Beispiel wurde mit MS Word ein neues Dokument erstellt und die Platzhalter eingefügt. Deutlich erkennbar sind die Schrift- und Absatzformatierungen wie Fettsatz, blaue Schriftfarbe und rechtsbündige Ausrichtung in Abbildung 5. Das Dokument wird auf dem Webserver für unser PHP-Skript unter dem Dateinnamen Template.docx bereitgestellt.
Abb. 5: Vorlagen in PHPWord können beliebige Schrift- und Absatzformatierungen enthalten
Auch in diesem zweiten Programm wird zu Beginn die Klasse PHPWord.php eingebunden und mit dem Klassenaufruf $PHPWord = new PHPWord()ein neues Word-Objekt erzeugt. Mit $document = $PHPWord->loadTemplate(‚Template.docx‘) lädt PHPWord unsere Vorlage. In Listing 6 ist zu sehen, wie übersichtlich und strukturiert das Ausfüllen der Platzhalter über den Methodenaufruf $document->setValue(‚SUCHBEGRIFF‘, ‚INHALT‘) in PHPWord abgebildet wurde.
Listing 6
// head
$document->setValue('Person.Name1', 'Gustav');
$document->setValue('Person.Name2', 'Walterswackerhausendeel');
$document->setValue('Person.Adress', 'Venusallee 12a');
$document->setValue('Person.Zip', '10719');
$document->setValue('Person.Location', 'Berlin');

// date
setlocale(LC_TIME, 'de_DE');
$document->setValue('LetterDate', strftime('%A, %d. %B %Y'));
Die Datumsangabe wurde mit strftime formatiert, da die Funktion date nur die englischsprachige Ausgabe für Monatsnamen und Wochentage beherrscht. Weitere Informationen sind unter [5] und [6] verfügbar. Zum Schluss des Skripts wird der gewünschte Dateiname der Zieldatei an den Aufruf $document->save(‚CoverLetter.docx‘) übergeben und das fertige Dokument steht zur Verfügung. Das Beispielprogramm ist einfach gehalten, zeigt aber die Möglichkeiten auf, wie einfach Briefe und Begleitschreiben mit PHPWord umgesetzt werden können. Weitere Ausbaustufen wären, dass der Benutzer in der Anwendung aus mehreren Vorlagen wählen kann, das Skript über Datenbankzugriff die Kundeninformationen abruft, das Dokument erzeugt und in der Anwendung in der Kontakthistorie der Firma hinterlegt. Mehr im Artikel: Teil 1 Teil 2 Teil 4
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -