Bernd-Ludwigs Homepage

Valid HTML 4.01 Strict Valid CSS!

Diverses >> RTF mit PHP

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):

  1. 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.
  2. Man öffnet das eben erzeugte Template mit einem Editor, der nicht das Dokument interpretiert, sondern als ASCII-Text anzeigt.
  3. Man sucht sich seinen Platzhalter und ersetzt ihn durch den PHP-Code.
  4. 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.