PHP: eine dynamische Worddatei erstellen und aufrufen

In diesem Artikel möchte ich Ihnen zeigen, wie man mit PHP eine dynamische Worddatei erstellen kann und diese ohne zwischenzuspeichern dem Anwender zur Verfügung stellt.

Zunächst bedienen Sie sich einem kleinen Trick. Sie erstellen eine Worddatei und speichern diese im RTF-Format ab. Diese Datei dient Ihnen als Template, in dem Sie Platzhalter einbauen und diese später dynamisch in PHP ersetzen können. Im verwendeten Beispiel habe ich die Datei wordfile.rtf genannt.

RTF-Datei

RTF-Datei

Im nächsten Schritt müssen Sie der Datei noch die Endung .php hinzufügen. Dazu benennen Sie im Windowsexplorer die Datei einfach um und hängen die Endung dran.  Die umbenannte Datei können Sie mittels PHP einlesen und bearbeiten!

Anschließend öffnen Sie die Datei wordfile.rtf.php und ersetzen die Platzhalter in PHP wie folgt:


<?php
$content = file_get_contents('wordfile.rtf.php');

//remove php tags
$content = str_replace(‘<?php /*’, ”, $content);
$content = str_replace(‘?>’, ”, $content);

// replace variables
$content = str_replace(‘%test%’, “Das ist ein Test!”, $content);
$content = str_replace(‘%date%’, date(“d.m.Y”), $content);
$content = str_replace(‘%text%’, “Hier steht ein Text.”, $content);
?>

Und mit folgendem Code wird die Datei, ohne diese auf dem Server zu speichern, zum Anwender gesendet:


<?php
// send file to user
header('Content-Type: application/rtf;charset=utf-8');
header('Content-Disposition: attachment; filename="Test.doc"');
print $content;
?>

Das Endergebnis sieht dann wie folgt aus:

Ergebnis der dynamisch erzeugten Worddatei

Ergebnis der dynamisch erzeugten Worddatei

Wenn Ihnen die Lösung weitergeholfen hat, würde ich mich über ein „Like” oder einen Kommentar sehr freuen. Danke!

 

Facebook Kommentare:

10 Responses to “PHP: eine dynamische Worddatei erstellen und aufrufen”

  1. Stefan sagt:

    Klappt Super!
    Gibt es auch die Möglichkeit eine Grafik auszutauschen?

    • Ja, die gibt es. Diese Möglichkeit ist aber wesentlich aufwendiger. Wenn es statische Bilder sind, würde ich die Bilder alle mal in Word rein kopieren und dann die langen Strings in PHP austauschen.

  2. Astrid sagt:

    Hat mir sehr geholfen. Aber wie kann ich innerhalb von %text% noch Zeilenumbrüche mit übergeben? \r\n und chr(13).chr(10) haben irgendwie nicht funktioniert.

  3. Hookem sagt:

    Hallo,

    ist es igendwie möglich auch eine Tabelle zu erzeugen mit dem Script oben.

    Vielen Dank

    • Klar. Erstelle dir doch mal eine Tabelle in Word, speichere die Datei im RTF-Format ab und schaue dir dann das Ergebnis in einem Editor an. Am besten fügst du in Word noch ein Hilfswort ein, nachdem du dann suchen kannst.

      Grüße
      Mathias

  4. Nadine sagt:

    Hallo,
    wenn ich versuche, die Datei umzubenennen, erhalte ich nur eine dateiname.php.rtf anstatt der gewollten Dateiname.rtf.php. Mache ich was falsch oder gibt es einen Trick?
    Viele Grüße und danke!
    Nadine

    • Hallo Nadine,
      ich weiß jetzt nicht genau wo es bei dir hängt. Aber speichere deine Worddatei in Office im RTF-Format ab. Dann öffnest du die Datei mit einem Texteditor. Kopiere den Office-Code und füge ihn in eine beliebige PHP-Datei. Hast du das gemeint? Wenn nicht, poste doch bitte ein wenig Code.

      Grüße
      Mathias

Hinterlassen Sie einen Kommentar

*