Word Dokument via PHP erstellen

hans_schmid

Erfahrenes Mitglied
Hallo,

ich habe mal wieder ein ziemliches Problem.
Ich muss bzw. würde gerne über PHP ein Word Dokument erstellen.

Dazu habe ich mich jetzt mal im net schlau gemacht und zumindest mal die Möglichkeit der COM-Objekte gefunden.
Das funktioniert prinzipiell auch allerdings gibt es zwei Nachteile.
1. Muss MS Word dazu auf dem Server installiert sein (was wohl im Betrieb dann nicht der Fall sein wird)
und 2. werden, wenn ich eine Tabelle in das Dokument einfügen möchte, alle Tabellenränder mit übernommen, was ziemlich unschön aussieht.

Hier mal mein Code:
write_to_doc.php
PHP:
<?php
$word=new COM("word.application") or die("nix geht");
$word->visible = 1;
$word->documents->Open("C:\\test.htm");
$word->documents[1]->saveas("C:\\test_one.doc",1);
$word->Quit();
$word->release();
$word = NULL;
?>
test.htm
PHP:
 <table border="0" bordercolor="white" bordercolordark="white" bordercolorlight="white" >
<tr>
	<td>
		<table width="240">
		<tr>
			<td><img src="logo.jpg" width="80" height="58" alt="" border="0"></td>
			<td valign="top" align="right"><img src="siemens.jpg" width="100" height="17" alt="" border="0"></td>
		</tr>
		</table>
	</td>
</tr>
<tr>
	<td height="50" bgcolor="#B7DDFF">
		<table width="240">
		<tr>
			<td align="right"><font size="+1">ertser Teilnehmer</font></td>
		</tr>
		</table>
	</td>
</tr>
</table>

Mit diesem Code bekomm ich dann folgendes Dokument:

doc_screen.jpg


Hat dazu jemand eine andere Idee/Lösungsansatz?

Wäre über jede erdenkliche Hilfe dankbar!

MfG
Hans
 
Also zunächst, habe weder Ahnung von PHP noch von COM-Objekten.
Aber ich denke mit einem Trick lässt sich dein Problem ohne weiteres lösen.
Word gibt, wenn es nicht als editor eingerichtet ist, jedes mit HTML formatierte Dokument aus.
Soll heißen, wenn du deine test.html einfach in test.doc umbenennst, sie dann in word öffnest, wird es wie von dir gefordert angezeigt.
Das mit den unschönen Rändern ist Einstellungssache in Word selber.

gruß
thekorn
 
Zuletzt bearbeitet:
Das hört sich ja schonmal nicht schlecht an.

Und wo welche Einstellung muss ich ändern, damit die Ränder nicht angezeigt werden?

MfG
hans
 
Danke danke, das funktioniert wirklich ganz gut.

Allerdings habe ich jetz noch ein anderes Problem:

Wie bekomme ich den HTML-Quelltext, den PHP erzeugt, in eine Datei (html oder txt...) geschrieben?

Also sowas wie im Browser "Quelltext anzeigen"...

Kann mir da jemand einen Tip geben?

MfG
Hans
 
Entweder im Script direkt, setzt aber vorraus, dass du den ganzen html-Code in einer Variable speicherst und diese dann in die Datei speicherst,
oder recht einfach auf der Konsole:

php deinedate.php > deinworddokument.doc
 
Original geschrieben von Ben Ben
[...]den ganzen html-Code in einer Variable speicherst [...]
Das ist ja mein eigentliches Problem.
WIe bekomme ich den generieten HTML-Code in eine Variable? Mit den ganzen file-Funktionen (fread, usw) geht's auf jeden Fall nicht. (Der Datei wird über die URL noch ein Parameter übergeben, falls das wichtig für die Beantwortung meiner Frage ist)
Ich steh völlig auf dem Schlauch.

MfG
Hans
 
Zuletzt bearbeitet:
So, jetzt habe ich nen Weg gefunden. Für alle die es interessiert: mit ob_get_content funktioniert's.

Allerdings habe ich jetzt noch ein klitzekleines Problem.
In das Word-Dokument werden Grafiken eingefügt. Das funktioniert auch alles wunderbar.
Nur wenn ich mir das Dokument dann auf meinen Rechner herunterlade, werden die Grafiken nicht mehr angezeigt, da sie auf meinem Rechner nicht vorhanden sind.
Wie kann ich es also schaffen, die Grafiken im Word-Dokument zu implementieren? Also so, wie wenn ich sie in Word direkt einfügen würde?

Wenn mir das noch jemand erklären könnte, bin ich wunschlos glücklich ;-)

MfG
Hans
 
Hola!

Anderer Vorschlag:
Versuch es doch einfach mit einer Klasse, die RTF Dokumente erstellen kann. Nach dem erstellen der RTF Datei benennst du die Datei einfach von *.rtf nach *.doc um. MS Word wird keine Probleme haben, das Rich Text Format richtig interpretieren zu koennen - ausserdem klappts dann auch mit den Bildern.

Edit: Die Klasse von José Manuel SÁNCHEZ RIVERO solltest du dir ansehen.
http://phpdocwriter.sourceforge.net/index.php?lang=en

Cheers,
stanleyB
 
Zuletzt bearbeitet:
Das scheint wirklich die beste Lösung zu sein.

Allerdings klappt das mit dem php Docwriter nicht, da OpenOffice instelliert sein muss, um ein RTF-File generieren zu können.

Ich hab auch mal im Net nach RTF-Klassen gesucht, bisher aber nur nutzloses oder kommerzielles gefunden.

Hat dazu evtl. noch jemand nen Tip für mich?

MfG
cyber
 
Zurück