RTF-Dateien mit PHP erstellen

Letzthin musste ich im Geschäft mit PHP einige Wordfiles erstellen. Da sich die Formatierung der Wordfiles auf fetten Text beschränkte machte ich es mir einfach und erstelle RTF-Files mit der Endung .doc. RTF-Dateien sind Plaintext und so recht einfach zu erstellen und wenn die Dateiendung .doc ist, werden sie automatisch mit dem Word geöffnet. So habe ich erstmal im Word eine Datei mit fettem und normalem Text erstellt und die als RTF abgespeichert. So kann man diese Datei gleich als Vorlage benutzen.

Ich habe nun den Inhalt der Datei in einer Variable gespeichert, um so die RTF-Datei schnell erstellen zu können. Das sieht dann so aus (man beachte die doppelten Backslashes)
<?
// template erstellen
$template="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2055{\\fonttbl{\\f0\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f1\\fnil\\fcharset0 Calibri;}}
{\\colortbl ;\\red0\\green0\\blue0;}
{\\*\\generator Msftedit 5.41.21.2509;}\\viewkind4\\uc1\\pard\\cf1\\f0\\fs24
\\b {fett}
\\par
\\b0 {normal}
\\par\\cf0\\lang7\\f1\\fs22\\par
}"
;
?>


In diesem Template kann man nun die beiden Variabeln {fett} und {normal} durch den gewünschten Text ersetzen. Allerdings kann man den Text nicht einfach so einfügen, denn Sonderzeichen und Zeilenumbrüche müssen erst noch richtig codiert werden. Das geht so:
<?
// sonderzeichen und zeilenumbrueche ersetzen
$replace['from'][]="&auml;";
$replace['from'][]="&ouml;";
$replace['from'][]="&uuml;";
$replace['from'][]="&Auml;";
$replace['from'][]="&Ouml;";
$replace['from'][]="&Uuml;";
$replace['from'][]="\r";

$replace['to'][]="\'e4";
$replace['to'][]="\'f6";
$replace['to'][]="\'fc";
$replace['to'][]="\'c4";
$replace['to'][]="\'d6";
$replace['to'][]="\'dc";
$replace['to'][]="\n\\par\n";

$text=str_replace($replace['from'],$replace['to'],$text);
?>


Alles in allem kann das nun so aussehen:
<?
// template erstellen
$template="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2055{\\fonttbl{\\f0\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f1\\fnil\\fcharset0 Calibri;}}
{\\colortbl ;\\red0\\green0\\blue0;}
{\\*\\generator Msftedit 5.41.21.2509;}\\viewkind4\\uc1\\pard\\cf1\\f0\\fs24
\\b {fett}
\\par
\\b0 {normal}
\\par\\cf0\\lang7\\f1\\fs22\\par
}"
;

// fetter Text
$fett="dies ist ein fetter Text";

// normaler Text
$normal="Dies ist ein normaler Text

mit Umlauten und Zeilenumbr&uuml;chen"
;

// sonderzeichen und zeilenumbrueche ersetzen
$replace['from'][]="&auml;";
$replace['from'][]="&ouml;";
$replace['from'][]="&uuml;";
$replace['from'][]="&Auml;";
$replace['from'][]="&Ouml;";
$replace['from'][]="&Uuml;";
$replace['from'][]="\r";

$replace['to'][]="\'e4";
$replace['to'][]="\'f6";
$replace['to'][]="\'fc";
$replace['to'][]="\'c4";
$replace['to'][]="\'d6";
$replace['to'][]="\'dc";
$replace['to'][]="\n\\par\n";

$fett=str_replace($replace['from'],$replace['to'],$fett);
$normal=str_replace($replace['from'],$replace['to'],$normal);

// Template bearbeiten
$template=str_replace("{fett}",$fett,$template);
$template=str_replace("{normal}",$normal,$template);

// daten schreiben
$fp=fopen("file.doc","w");
if(!
$fp)
{
    die(
"cannot write file");
}
fPuts($fp,$template);
fClose($fp);
?>




Arbeitsgruppenvorlagen im Word 2007 einrichten

Das im neuen 2007 MS Office alles etwas anders aussieht ist ja bekannt. Heute war ich wieder mal auf der Suche nach einer Einstellung. Und zwar wollte ich den Speicherort für Arbeitsgruppenvorlagen anpassen. Nach mehreren Minuten intensiver Suche habe ich die Einstellung auch gefunden. Recht einfach, wenn man weiss wo. Und für alle, die nicht wissen wo suchen:
Zuerst klickt man auf den Office Button links oben. Nun wählt man Word-Optionen und dann Erweitert an.


Im diesem Fenster findet man ganz unten den Button Dateispeicherorte. Mit einem Klick auf diesen Button öffnet sich dasselbe Fenster, dass man schon aus vergangenen Office Versionen kennt und dort kann man nun die Vorlagen angeben.
http://images.t-error.ch/blog/617/speicherort.jpg

docx Files zur doc konvertieren

Das neue MS Word 2007 speichert die Dateien standardmässig ja im .docx Format. Dieses Format kann mit einem Word 2003 oder XP nicht gelesen werden. Standardmässig zumindest.

Natürlich gibt es da einige Möglichkeiten, damit das trotzdem funktioniert. Die wohl beste Möglichkeit ist der Download des Microsoft Office Compatibility Packs. Einmal installiert, kann man damit docx Dateien auch in den älteren Word Versionen öffnen.

Alternativ gibt es einige Online-Konverter, welche die Arbeit auch erledigen, wenn auch nicht ganz so konfortabel, wie der MS-Patch.