Dynamische Erzeugung von RTF mit PHP
Mit PHP kann man nicht nur Webseiten dynamisch erzeugen, sondern auch andere Dateien, die man auf einem
Webserver anbieten möchte - z.B. RichText-Dokumente (rtf). Man braucht dafür noch nicht einmal irgendwelche zusätzlichen PHP-Erweiterungen,
sondern nur ein paar Kenntnisse über das jeweilige Dateiformat.
Zur Erklärung: Im Grunde kann man PHP-Code in jede Datei mit textbasiertem Format einfügen. Der Server muss nur wissen, dass dieses Format
mit PHP zu bearbeiten ist.
Wie funktioniert das nun konkret mit rtf-Dateien? Am einfachsten ist es, wenn man in ein festes Template dynamische Daten einfügen möchte (Inhalte aus einem Formular oder einer Datenbank, aktuelles Datum etc):
- Man erzeugt das Template mit einem Textverarbeitungsprogramm (z.B. MS Word oder OpenOffice Writer) und schreibt dort, wo der dynamische Inhalt erscheinen soll, irgend etwas als Platzhalter hinein.
- Man öffnet das eben erzeugte Template mit einem Editor, der nicht das Dokument interpretiert, sondern als ASCII-Text anzeigt.
- Man sucht sich seinen Platzhalter und ersetzt ihn durch den PHP-Code.
- Man fügt am Anfang der Datei folgende Zeile ein: <?php Header('Content-Type: application/rtf')?>
Dann muss man dem Server noch mitteilen, dass er rtf-Dateien mit PHP zu bearbeiten hat. Bei Apache-Servern kann man das machen, indem man in das
Verzeichnis, in dem auch die rtf-Datei liegt, eine Datei namens .htaccess anlegt (ja, so eine, wie man normalerweise für Zugriffsrechte
verwendet), die den folgenden Inhalt hat:
AddType application/x-httpd-php .rtf
Voraussetzung hierfür ist allerdings, dass die Apache-Konfiguration die Verwendung von AddType erlaubt (AllowOverride FileInfo
oder AllowOverride All in der Apache-Konfiguration).
Hier ein Beispiel: Das Template wurde mit OpenOffice Writer erstellt (so sieht es aus). Hier der Inhalt des Templates als reiner Text:
Nun soll an Stelle des Textes "And here we will insert the current date." ein aktueller Zeitstempel (Datum und Uhrzeit) stehen. Also wird das Template so geändert, dass es die entsprechenden PHP-Zeilen enthält:
Das wars schon! Und was man dann vom Webserver empfängt, ist hier zu sehen.