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:

53 Kommentare
    • Mathias Bauer
      Mathias Bauer sagte:

      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.

      Antworten
  1. Astrid
    Astrid sagte:

    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.

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      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

      Antworten
  2. Nadine
    Nadine sagte:

    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

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      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

      Antworten
  3. Trom
    Trom sagte:

    Hallo

    Das ist sehr gut erklärt, vielen Dank!
    Ist es auch möglich das Dokument auf dem Server zu speichern so das der Nutzer das Dokument nach dem Bearbeiten gleich wieder auf dem Server speichern kann?

    Gruss
    Trom

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      Man kann zwar die Worddatei auch auf dem Server speichern, aber vom Browser aus nicht mehr bearbeiten. Vor dem Öffnen wird die Datei erst heruntergeladen. Die geänderte Datei liegt dann lokal gespeichert.
      Es gibt noch die Möglichkeit in einem “lokalen” Netzwerk die Festplatte als Laufwerk einzubinden. Dann kann man auf die Datei verlinken, öffnen und speichern. Dazu muss der Browser jedoch auch erweitert werden, da der Browser nicht auf Dateien auf der Festplatte zugreifen darf.

      Antworten
      • Trom
        Trom sagte:

        Ok, vielen Dank.
        Wir arbeiten mit einem CRM bei dem dies geht.
        Daher hat es mich interresiert wie die das machen, leider finde ich nichts im Internet…..

        Antworten
  4. Andreas Vogt
    Andreas Vogt sagte:

    Nettes Tool, jedoch zeigt Word beim Öffnen nicht den Inhalt, sondern auch alle (RTF) Formatierungstags an…?
    Woran könnte das liegen?

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      Das liegt bestimmt daran, dass Formatierungstags auskommentiert sind oder PHP-Tags mit in die Datei geschrieben worden sind. Wie sieht denn die erzeugte Datei in einem Editor aus? Diese Datei am besten mal mit einer original Worddatei vergleichen.

      Antworten
  5. Meier
    Meier sagte:

    Hallo zusammen,

    tolle Erklärung zum Drucken in Word. Danke!

    Mit dieser Methode kann ich einzelne Bereiche (Textmarken) in meinem Worddokument ansprechen und entsprechend füllen.

    Ist es auch möglich, eine Tabelle damit anzusprechen und neue Tabellenzeilen je nach Anzahl der Datensätze in einer SQL-Datenbank zu erzeugen?

    Danke im Voraus für die Bemühungen
    Gruß
    Meier

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      Ja, klar. Am besten erstellt man ein Tabelle mit Werten in Office, speichert diese in RTF ab und schaut sich den Code in einem Editor an. Dann kopiert man sich nur den Teil der Tabellenzeile raus. Diese Zeile kann man dann beliebig oft in PHP aneinander hängen.

      Einfacher wäre es jedoch, HTML abzuspeichern und der Datei die Endung .doc zu vergeben. Word kann auch HTML.

      Antworten
  6. Adrian
    Adrian sagte:

    Super cooles Script. Doch habe ich immer das Problem mit den Umlauten habe UTF8 Windows 1250 unde ISO-8859-1 probiert immer das selbe. Kann mi jemdna helfen? Wäre echt Cool.

    Danke schon im Voraus.

    LG Adrian

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      Versuche den Inhalt mal mit utf8_decode() zu bearbeiten und dann in Office zu öffnen. Ansonsten sollte immer alles in UTF-8 codiert sein. Ist dein Skript auch in UTF-8 abgespeichert?

      Antworten
      • Foxxy
        Foxxy sagte:

        Leider funktioniert das mit den Umlauten wirklich nicht, UTF-8 steht ja schon im header(), aber auch utf8_decode() hilft leider gar nicht… Ich bin bisher auch auf noch keine weitere Idee gestoßen…
        Die Umlaute werden zwar angezeigt, jedoch in einer ganz anderen Schriftart.

        Antworten
        • Mathias Bauer
          Mathias Bauer sagte:

          Dann bleibt dir nichts anderes übrig, als nochmal alles durch zu gehen. Irgendow hat hat sich ein Fehler eingeschlichen…

          Sind deine Dateien in UTF-8 kodiert? Ist dein Text in UTF-8 kodiert? Hast du schon einmal in Word ein Umlaut eingefügt und dann geschaut, wie der Umlaut im Texteditor auschaut?

          Antworten
  7. Jörg
    Jörg sagte:

    Hallo,

    bei mir funktioniert das Beispiel leider nicht. Entweder öffnet sich nur ein leeres Test.doc oder ein neue Seite im Browser mit den “RTF-Dateiinfos” sowie dem o.g. Programmiercode.

    Mir ist auch nicht klar, was unter der o.g. Anweisung zu verstehen ist. “Die umbenannte Datei können Sie mittels PHP einlesen”. Bedeutet dies, ich muss die Datei ‘wordfile.rtf.php’ mittels PHP-Editor einlesen bzw. öffnen und anschließend den o.g. PHP-Code darunterschreiben oder benötige ich zwei Dateien eine ‘wordfile.rtf.php’ und eine weitere xyz.php mit der ich die Datei ‘wordfile.rtf.php’ öffne, die Platzhalter ersetze und als Test.doc ausgeben lasse.
    Wenn ich zwei Dateien benötige, müssen die in den gleichen Ordner auf dem Server.

    Beim Öffnen der Datei wordfile.rtf.php, die ich wie beschrieben angelegt habe, erhalte ich im PHP-Editor erst einmal den Inhalt der der Datei “wordfile.rtf.php” angezeigt, mit dem der Editor offenbar nichts anfangen kann. Muss dieser gelöscht oder auskommentiert werden.

    Sorry für die vielen Fragen. Aber jeder fängt mal an.
    Danke.

    Gruß

    Jörg

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      Ja, du benötigts zwei Dateien. Die wordfile.rtf.php ist deine in Word erstellte Datei mit den Platzhaltern. Diese Datei legst du dann in den gleichen Ordner mit deiner Php-Datei, aus der du deine “Word-Datei” einliest und verarbeitest.

      Antworten
  8. Alex
    Alex sagte:

    Hallo,
    bei mir funktioniert es leider auch nicht es werden die Variablen in der Datei nicht ausgetauscht (d.h bei mir steht weiter %test% … ) in der Datei. ich benutze Apache/2.4.7 (Ubuntu) Server PHP Version ist 5.5.9-1ubuntu4.17.
    vielen dank

    Antworten
      • Alex
        Alex sagte:

        Hallo Mathias,
        erstmal Danke für die schnelle Antwort.
        ich habe eine rtf datei mittels Libre Office erstellt welche so aussieht:

        %test%

        %date%

        %text%

        diese habe ich wie beschreiben in serviceschein.rtf.php umbenannt

        so sieht mein script aus :
        <?php
        $content = file_get_contents('serviceschein.rtf.php');

        $content = str_replace('’, ”, $content);

        $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);

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

        leider hat die doc welche automatisch heruntergeladen wird auch nur den folgenden Inhalt:
        %test%

        %date%

        %text%

        Vielen Dank

        Antworten
        • Mathias Bauer
          Mathias Bauer sagte:

          Öffne deine LibreOffice-Datei mal mit einem Texteditor (bspw. Notepad, Proton, etc.). Dann wirst du sehen, dass deine Variablennamen nicht mehr zusammenhängend sind. Korrigiere im Texteditor die Variablennamen und es sollte funktionieren.

          Antworten
  9. Stefan
    Stefan sagte:

    Hallo Matthias,

    vielen Dank für deinen Beitrag. Der hat mir sehr geholfen. Ich erzeuge auch schon schöne Word-Dokumente aus meiner PHP-Applikation. Jetzt möchte ich Bilder einfügen, die vom Benutzer hochgeladen werden. Im Word-Dokument sind die Daten der Bilder immer im HEX-Format hinterlegt. Hast du eine Idee, wie ich die Bilder automatisch in dieses Format umwandeln und dann in die Word-Datei schreiben kann?
    Vielen Dank schon jetzt!
    Stefan

    Antworten
  10. Susi
    Susi sagte:

    Hallo Mathias,

    vielen Dank für das Tutorial. Bei mir klappt das super. Was ich super fände, wäre eine Art bedingte Formatierung. Das heißt, ich frage aus Datenbanken bestimmte Werte ab, die in das doc sollen, sind diese unter oder über einem gewissen Schwellwert, wäre es schön, wenn diese dann bspw. in roter Farbe erscheinen würden.

    Ist sowas auch möglich?
    Vielen Dank schon vorab!
    Liebe Grüße
    Susi

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      In diesem Fall müsstest du die Formatierung mit in deinen PHP-Code einfügen. Dann fragst du den Schwellwert in PHP ab und fügst die Formatierung mit ein. Markiere mal ein Wort in Word rot und schaue dir das im Editor an.

      Antworten
      • Susi
        Susi sagte:

        Danke für die schnelle Antwort! Das hat es gebracht!

        Allerdings habe ich das gleiche nun auch bei Diagrammen probiert: Werte für verschiedene Zeitpunkte sollen als Säulen in einem Diagramm erscheinen.
        Wenn ich zwei Dateien, bei denen ich lediglich den Wert eines Balkens geändert habe, im Texteditor miteinander vergleiche, dann sehe ich unzählige veränderte Zeilen mit einer schier unendlichen Auflistung von Hexadezimalzeichen. Ich hatte gehofft, dass man dann in dieses Feld auch nur ein %value1% eintragen und anschließend dieses durch einen Integer-Wert ersetzen kann.
        Gibt es auch hierfür eine einfache Lösung?

        Vielen Dank nochmals!

        Antworten
        • Mathias Bauer
          Mathias Bauer sagte:

          Das geht auch mit %value%. Wahrscheinlich hast du zu viel oder zu wenig ersetzt. Oder an der falschen Stelle.
          Eine andere Möglichkeit wäre, eine RTF-Datei zu erstellen. Die kann man auch mit Word öffnen. Der entscheidende Vorteil ist aber, dass du hier mit HTML arbeiten kannst.

          Antworten
          • Susi
            Susi sagte:

            Also wenn ich in einem Dokument ein Diagramm erstelle und dort die Werte für die Balken bearbeiten möchte, öffnet sich ein kleines Excel Fenster. In dieses gebe ich dann die Werte ein. Anstelle einer bspw. 3,5 habe ich dann %value123% eingegeben. Daraufhin verschwindet der Balken, weil es entsprechend keine Gleitkommazahl mehr ist.

            Speichere ich dies nun als .rtf und öffne das in einem Texteditor, dann finde ich weder “%value123% noch auch nur ein Prozentzeichen.

            Ich habe zwar dann in dem Dokument über 46.000 Zeilen Quellcode für das Diagramm, aber keine Variablen. Ich bin gern bereit das Dokument zu schicken zur Überprüfung..

          • Susi
            Susi sagte:

            Hallo Mathias,

            das Excel Sheet wird doch da aber nur von Word intern genutzt. Auf das kann ich doch gar nicht zugreifen?! Wie soll ich denn da mit PHPExcel Werte ändern können?
            Ich komme auch nach Einlesen in die Doku an der Stelle irgendwie nicht weiter.

  11. Bendikt
    Bendikt sagte:

    Hallo, vielen Dank!

    Leider klappt’s bei mir auch noch nicht:

    New Document

    <?php
    $TextInhalt = file_get_contents('Dokumente/KopfbogenOH.rtf.php');
    $TextInhalt = str_replace('’, ”, $TextInhalt);
    echo $TextInhalt;
    $_SESSION[‘TextInhalt’] = $TextInhalt;
    ?>

    Serienbrief erstellen

    SerienbriefDrucken.php sieht so aus:

    Ich habe also Einlesen und doc-Erstellung getrennt, denn der Benutzer muß noch einiges einstellen, bevor das doc erstellt wird, und Die rtf-Datei wird, und header verträgt sich ja nicht mit zusätzlichem HTML-code. Also speichere ich den Text in der Session und erstelle das doc auf einer neuen Seite

    Das Einlesen klappt soweit, der Text wird mit echo auf der ersten Seite korrekt ausgegeben.
    Die zweite Seite erstellt auch ein doc, dieses ist jedoch vollkommen leer. Ich habe schon darauf geachtet, das rtf aus Word in utf-8 abzuspeichern. Wo könnte das Problem liegen?

    Danke und Grüße

    Ben

    Antworten
    • Mathias Bauer
      Mathias Bauer sagte:

      Das ist so schwierig zu sagen. Ich tippe aber mal auf den Umbruch. Die zweite Seite ist leer, da der Umbruch nicht richtig angehängt wird. Erstelle einmal in Word ein Dokument mit zwei Seiten und schaue dir es im Editor an.

      Antworten
      • Bendikt
        Bendikt sagte:

        Es kommt eigentlich kein Umbruch vor, und das Ergebnis ist ein vollkomen leeres, einseitiges Dokument. Im geggenwärtigen Stand habe ich noch nichts ersezt, das rtf-Dokument enthält Text und ein Bild (Logo).

        Hier noch mal der Code, diesmal hoffentlich unversehrt:
        (habe die Tagzeichen durch frnz. Gänsefüße › ersetzt)

        —–Datei Serienbrief.php——

        ‹!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”›
        ‹html›
        ‹head›
        ‹title›New Document‹/title›
        ‹meta http-equiv=”content-type” content=”text/html” charset=”utf8″›
        ‹/head›
        ‹body›
        ‹form action=”Serienbrief.php”›
        ‹?php
        $TextInhalt = file_get_contents(‘Dokumente/KopfbogenOH.rtf.php’);
        $TextInhalt = str_replace(‘‹?php /*’, ”, $TextInhalt);
        $TextInhalt = str_replace(‘?›’, ”, $TextInhalt);
        echo $TextInhalt;
        $_SESSION[‘TextInhalt’] = $TextInhalt;
        ?›
        ‹/form›
        ‹a href=”SerienbriefDrucken.php”›Serienbrief erstellen‹/a›
        ‹/body›
        ‹/html›

        ——-Datei SerienbriefDrucken.php——–

        ‹?php
        header(‘Content-Type: application/rtf;charset=utf-8’);
        header(‘Content-Disposition: attachment; filename=”Test.doc”‘);
        print $_SESSION[‘TextInhalt’];
        ?›

        Antworten
        • Bendikt
          Bendikt sagte:

          Sorry, ich hab’ den Fehler gefunden – hatte nichts mit Deinem Script zu tun.
          Die zweite Seite “SerienbriefDrucken.php” hat einfach die Session nicht aufgerufen.
          Normalerweise habe ich auf jeder Seite ein paar wichtige Funktionen includiert, darunter auch den Sessionstart. Die entsprechende require_once Zeile habe ich in der fraglichen Datei weggelassen, aus Angst sie könnte sich irgendwie mit den Headern beißen. An den Sessionstart habe ich gar nicht mehr gedacht.
          So hatte die zweite Seite gar keine Daten unter $_SESSION[‘TextInhalt’].
          Nachdem ich diesem Fehler beseitigt hatte, klappt es jetzt auch mit dem Dokument.
          Danke noch mal für das tolle Script

          Antworten
        • Bendikt
          Bendikt sagte:

          Ich habe noch ein Problem in diesem Zusammenhang, das Du vielleicht lösen helfen kannst – mit rtf kenne ich mich nicht besonders aus und die Informationen im Internet sind sehr unübersichtlich…
          .
          Das Dokument enthält einen Briefkopf mit Logo. Der Bildbereich ist im Editor auch gut als dichter “Zeichenteppich” zu erkennen. Bekanntlich sind Bilder in rtf recht speicherintensiv.
          Nun soll ein Serienbrief (in einem einzigen Dokument) erstellt werden – mehrmal der gleiche Text, mit Anpassungen für Adresse, Anrede etc, getrennt durch Seitenumbrüche.
          .
          Dazu gehört auch auf jedem neuen “Einzelbrief” der Briefkopf, jedesmal mit dem gleichen Bild (Logo). Dadurch bläht sich die Dateigröße ins unermeßliche.
          .
          Nun die Frage:
          Kann man auch – innerhalb der rtf-Datei – ein an einer Stelle enthaltenes Bild mehrmals referenzieren? Also einen Dateiinternen “Verweis” aus das Bild, daß es nochmals dargestellt werden soll?

          Antworten
  12. Paul
    Paul sagte:

    Hallo zusammen,

    ich habe ein Problem. Mein Code:
    <?php
    function druck_offerte($offerten_nr,$freigabe_verkauf,$preisoff,$abfahrt,$anrede,$lastname,$firstname,$adress,$plz,$ort,$mail,$tel,$reisedatum,$route,$plaetze,$catering,$message,$message_dbb,$lok,$wagen,$mailtyp)
    {
    $content = file_get_contents('./wp-content/themes/twentytwelve-child/wordfile.rtf.php');
    //remove php tags
    $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);

    header(‘Content-Type: application/rtf;charset=utf-8’);
    header(‘Content-Disposition: attachment; filename=”Test.doc”‘);
    print $content;
    }
    ?>

    Es wird nun der Inhalt der Webseite im Dokument angezeigt:

    DBB
    Dampf Bahn Bern
    Menü Springe zum Inhalt
    • Home
    • News
    o Aktualisierungen
    o Aus dem Fahrbetrieb
    • Verein
    o Geschichte
    o Statuten und Organigramm
    • Öffentliche Fahrten
    • Extra Fahrten/Charter
    • Technik / Infrastruktur
    o Rollmaterial
    o Depotwerkstätte
    o Projekte
    • Bildergalerie
    • Spenden
    • Frischdampf
    Was mache ich falsch?

    Antworten
  13. Paul
    Paul sagte:

    Hallo Mathias,
    Dank deinem Script und deinem Support kann ich wunderschöne Word-Dateien erstellen. Nun habe ich auch Bilder im Word Dokument: Statische Bilder funktionieren tadellos, bei den dynamischen habe ich noch ein Problem. Mit dem Code
    $fp = fopen (“C:\\xampp\\htdocs\\Test\\Bild1.jpg”, “rb”);
    $str = fread ($fp, filesize(“C:\\xampp\\htdocs\\Test\\Bild1.jpg”));
    $data = chunk_split(base64_encode($str));
    $pic= “Content-Type: image/jpg\n”;
    $pic.= “Content-ID: \n”;
    $pic.= “Content-Transfer-Encoding: base64\n”;
    $pic.= “Content-Disposition: inline; filename=\”C:\\xampp\\htdocs\\Test\\Bild1.jpg\”\n\n”;
    $pic.= $data.”\n\n”;
    $content = iconv(“utf-8”, “iso-8859-1”, $content);
    $content = str_replace(‘%Bild1%’, $pic, $content);
    erhalte ich den folgenden Output:

    Wir haben für Sie die folgende Zugskomposition reserviert:
    Content-Type: image/jpgContent-ID: Content-Transfer-Encoding: base64Content-Disposition: inline; filename=”C:.jpg”/9j/4AAQSkZJRgABAQEAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCABwAJYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3
    …….
    Hast Du einen Tipp wie ich diesen String als Bild darstellen kann?

    Besten Dank und viele Grüsse
    Paul

    Antworten
    • Paul
      Paul sagte:

      Heureka ich hab’s. Zwar ein bisschen kompliziert, aber es funzt.
      1. In meinem Beispiel will ich bis zu 5 Bilder dynamisch einfügen.
      2. 1 leeres Bild erstellen (in meinem Beispiel Platzhalter).
      3. Im rtf-Dokument mit der Feldunktion IncludePicture ein Bild einfügen, in meinem Beispiel C:\xampp\htdocs\Test\Platzhalter1.jpg. Platzhalter.jpg mit %Platzhalter1%.jpg ersetzen. Es kommt der Fehler: Das verknüpfte Bild kann nicht angezeigt werden…………

      4. Grösse anpassen

      5. Speichern und Datei nach rtf.php umbenennen
      6. Dann im php
      $content = str_replace(‘%Platzhalter1%’, ‘Bild1’, $content);
      $content = str_replace(‘%Platzhalter2%’, ‘Bild2’, $content);
      $content = str_replace(‘%Platzhalter3%’, ‘Bild3’, $content);
      $content = str_replace(‘%Platzhalter4%’, ‘Bild4’, $content);
      $content = str_replace(‘%Platzhalter5%’, ‘Platzhalter’, $content); Hier kein Bild
      Et voila:

      Preis: CHF 3’500.00
      Wir haben für Sie die folgende Zugskomposition reserviert (kein fünftes Bild):

      (kann leider kein Bild angezeigt werden)

      Antworten
  14. Olaf2500
    Olaf2500 sagte:

    Hallo, ich weiß der Beitrag ist schon älter aber vielleicht kannst du mir trotzdem noch helfen.
    Ich habe alles genau nach den Anweisungen befolgt, eine rtf-Datei erstellt, umbenannt in test.rtf.php und eine neue php Datei im selben Ordner erstellt in der ich alles oben kopiert habe (nur den namen der rtf Datei in test.rtf.php geändert). Wenn ich nun die neue php Datei öffne lädt es diese php Datei herunter, anstatt dem gewollten word dokument. Was habe ich falsch gemacht?

    Antworten

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar zu Foxxy Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*