| Planet-Quellcodes.de · Regeln/Impressum |
Hilfe
Suche
Chat
Mitglieder
Kalender
|
| Herzlich Willkommen. ( Einloggen | Registrieren ) | erneutes Übersenden der Registrierungs-Mail |
Achtung:![]() ![]() |
| marmai |
geschrieben am: 10.01.2011, 17:10
|
|
Gruppe: Moderatoren Beiträge: 426 Mitglieds-Nr.: 5 Mitglied seit: 31.08.2004 |
Hallo zusammen.
Erst mal die Vorgeschichte: Wir benutzen eine in php geschriebene Software, zum Verwalten von Kundeninformationen. Diese Software kann automatisch Reports im "doc Format" erstellen: Benutzer klickt auf einen Button -> der Browser öffnet Word mit dem Dokument. Das muss so bleiben, da die Anwender, die die Reports erzeugen, nicht unbedingt Informatiker sind und die Dokumente dann so komfortabel in Word anpassen können. Man möchte das Format dieses Dokuments nun verändern. u.a. sollen an bestimmten Stellen Seitenwechsel stattfinden, die Seitenzahl in einem Footer mitgezählt werden, etc. Ich hab also mal die Software von innen augeschaut und festgestellt, dass an sich nur html - Reports erstellt werden können. Um das jetzt als Word Dokument erscheinen zu lassen, schickt das PHP Script den HTML Code einfach als doc an den Browser (Mime, Content-type, ...). Nun bin ich ziemlich ratlos, wie ich da Seitenwechsel, Seitenzahlen, Footer, etc. einbauen soll. Seitenwechsel würden noch per CSS (page-break-before, ...) funktionieren. Das kann allerdings nur Word >= 2007 interpretieren. Ich brauche eine Lösung die in Word >= 2003 funktioniert. Für Footer, Seitenzahlen etc. sehe ich da irgendwie keine Möglichkeit, da HTML/CSS sowas nicht kennt. Ich habe schon überlegt, das Ganze im rtf Format zu erzeugen (also echtes rtf zu erstellen), aber das ist mit dem Format welches wir bräuchten (Inhaltsverzeichnis, Überschriften, Header, Footer, Tabellen, ...) auch nicht wirklich simpel. Hat irgendjemand eine Idee, wie man sowas mit möglichst wenig Aufwand lösen könnte? Vielleicht mit PHP den HTML Code in rtf konvertieren und irgendwie Footer, Seitenwechsel, usw. da rein basteln? Dürfte aber auch nicht ganz einfach sein. Beitrag bearbeitet von marmai am 10.01.2011, 17:12 |
| NetPanther |
geschrieben am: 10.01.2011, 18:27
|
![]() Administrator Gruppe: Administratoren Beiträge: 7.696 Mitglieds-Nr.: 1 Mitglied seit: 29.08.2004 |
Guten Abend,
wird die HTML Ausgabe denn sauber über Templates generiert oder klatscht das System die Tags nur irgendwie im Code aneinander? Technische Möglichkeiten zum Eingriff in die Word Dokumente sehe ich ehrlich gesagt eher nicht, dort wird der HTML Inhalt doch wahrscheinlich auch nur in Form eines Containers eingebettet. Am Ehesten wirst du dem Problem wohl beikommen, wenn du dir eine eigene Exportfunktion mit Templates schreibst. Zumindest die in neuen Word Versionen genutzten Dateiformate sind XML-basiert und ließen sich dann auch erzeugen (alternativ ODT). Wie trivial dann die Erstellung von Seitenzahlen und manuellen Umbrüchen ist, sei aber mal dahin gestellt. Vielleicht bieten Bibliotheken wie Zend_Service_LiveDocx dir hier Hilfsmittel an. MfG -------------------- :: NetPanther :: NetPanther@gmx.net :: Website :: IRC Channel: #NetPanther ::
Das Leben ist eine Beta. Nichts ist vollkommen. |
| marmai |
geschrieben am: 10.01.2011, 21:08
|
|
Gruppe: Moderatoren Beiträge: 426 Mitglieds-Nr.: 5 Mitglied seit: 31.08.2004 |
Leider ist an dieser Stelle nicht viel mit Templates. Die Ausgabe wird da dynamisch zur Laufzeit erzeugt. Sowohl Inhalt, als auch Format können individuell anders sein und werden erst bei der Erstellung im Code zusammengebastelt.
LiveDocx etc. habe ich mir auch schon angeschaut. Ich glaube nicht, dass es all das kann, was wir brauchen. Aber vielleicht lohnt sich hier auch mal ein genauerer Blick. Werde ich mir noch mal genauer anschauen. |
| NetPanther |
geschrieben am: 10.01.2011, 21:54
|
![]() Administrator Gruppe: Administratoren Beiträge: 7.696 Mitglieds-Nr.: 1 Mitglied seit: 29.08.2004 |
Guten Abend,
mir ist da noch ein Artikel aus dem PHP Magazin in den Sinn gekommen, den ich kürzlich mal in den Fingern hatte. In den eZ Components gibt es auch eine Klasse Document, mit der sich Dokument in verschiedene andere Formate konvertieren oder händisch neue Dateien erstellen lassen. Das DOC Format von Word wird zwar nicht explizit unterstützt, dafür aber seit knapp über einem Jahr ODT. Und meines Wissens nach verstehen das Format zumindest jüngere Office Versionen ja auch. Dort gibt es auch zahlreiche Möglichkeiten zur Dokumentenformatierung mit einer Syntax, die CSS stark ähnelt. Ist wahrscheinlich alles noch mit ziemlich viel Handarbeit verbunden, aber vielleicht wäre das auch noch eine Alternative zum Zend Framework. MfG -------------------- :: NetPanther :: NetPanther@gmx.net :: Website :: IRC Channel: #NetPanther ::
Das Leben ist eine Beta. Nichts ist vollkommen. |
| coyote |
geschrieben am: 11.01.2011, 23:31
|
|
Gruppe: Mitglieder Beiträge: 249 Mitglieds-Nr.: 141 Mitglied seit: 10.09.2004 |
Jenachdem wie umfangreich die Inhalte sind, wäre evtl. ein Serienbrief noch möglich. Mittels PHP wird die Datenuelle gefüllt. In WORD selber könnte man mit IF-Abfragen zu den Spalten (Mergefield) an bestimmten Stellen die Seitenumbrüche automatisch anzeigen lassen. Seitenzahlen in Kopf- oder Fußbereich werden dabei auch aktualisiert.
Geht das dann überhaupt noch über's Internet oder nur auf einem lokalen Rechner? Irgendwie muss ja WORD an die Datenquelle kommen ... ein absoluter (http://)-Pfad geht zwar, aber ob das die Sicherheitseinstellungen des Webservers erlauben. Oje, das wird glaube ich zu kompliziert. War nur sein ein Gedanke Beitrag bearbeitet von coyote am 11.01.2011, 23:35 |
| marmai |
geschrieben am: 12.01.2011, 21:01
|
||
|
Gruppe: Moderatoren Beiträge: 426 Mitglieds-Nr.: 5 Mitglied seit: 31.08.2004 |
Das dürfte kein Problem sein, da es bei uns im lokalen Netz laufen wird. Wir können da also mehr oder weniger machen was wir wollen. Ich wüsste inzwischen auch noch eine andere Möglichkeit, wie es funktionieren könnte. Somit habe ich jetzt erst mal ein paar Varianten. Da muss ich jetzt einfach mal probieren und forschen, welche wohl am besten funktionieren wird. Momentan komme ich aber nicht dazu, sind ein paar andere Dinge dazwischen gekommen. Vielleicht schaffe ich es irgendwann Ende nächster Woche mich wieder damit zu beschäftigen. Beitrag bearbeitet von marmai am 12.01.2011, 21:02 |
||
| NetPanther |
geschrieben am: 12.01.2011, 23:10
|
||||
![]() Administrator Gruppe: Administratoren Beiträge: 7.696 Mitglieds-Nr.: 1 Mitglied seit: 29.08.2004 |
Guten Abend, und würdest du deine Weisheit auch mit uns teilen?
MfG -------------------- :: NetPanther :: NetPanther@gmx.net :: Website :: IRC Channel: #NetPanther ::
Das Leben ist eine Beta. Nichts ist vollkommen. |
||||
| marmai |
geschrieben am: 13.01.2011, 21:36
|
|
Gruppe: Moderatoren Beiträge: 426 Mitglieds-Nr.: 5 Mitglied seit: 31.08.2004 |
Ich wollte die Möglichkeit lieber verschweigen weil sie "etwas" von hinten durch die Brust ins Auge wäre.
Also, zusätzlich zu der PHP Software existiert noch ein in Java geschriebener Server. Das PHP Script unterhält sich derzeit mittels RPC (Remote Procedure Call) mit dem Java Server und stößt da ein paar Verarbeitungen an. Die Möglichkeit, an dich ich dachte, wäre nun, das das PHP Script die generierte HTML Seite per RPC an den Java Server schickt, der diese Seite parst, daraus anschließend das Word Dokument erzeugt und irgendwo auf der Platte speichert. Das PHP Script kann dann die Datei von der Platte lesen und dem Browser zur Verfügung stellen. |
| Cookman |
geschrieben am: 19.02.2011, 15:38
|
|
Gruppe: Mitglieder Beiträge: 854 Mitglieds-Nr.: 6 Mitglied seit: 02.09.2004 |
Ich war schon lange nicht mehr hier und ich weiß dass der letzte Eintrag hier schon etwas zurückliegt, aber wieso schickst Du Word nicht einfach das ganze als RTF? Das müsste doch Fußnoten, Seitenumbrüche und sowas hinbekommen und lässt sich sicherlich einfacher erzeugen als das Documentformat von Word.
Beitrag bearbeitet von Cookman am 19.02.2011, 15:39 |
| marmai |
geschrieben am: 19.02.2011, 21:43
|
|
Gruppe: Moderatoren Beiträge: 426 Mitglieds-Nr.: 5 Mitglied seit: 31.08.2004 |
Ja, das hatte ich auch schon in Betracht gezogen.
Aber das RTF Format ist ziemlich ... kreativ. Und ich habe keine vernünftige Möglichkeit gefunden, RTF per PHP zu erstellen. Ich habe die Suche aber auch relativ schnell aufgegeben. Ich habe inzwischen die Lösung umgesetzt, die ich zuletzt angesprochen hatte. In etwa zumindest. Funktioniert ganz gut bis jetzt. Ich erzeuge dann das RTF, oder alternativ auch PDF, mit Hilfe von JasperReports. |
![]() |
![]() ![]() |