Hallo,
ich habe das Forum (und diverse andere) nun schon seit Tagen durchsucht, aber keine praktikable Lösung gefunden. Also wende ich mich an euch und hoffe, dass auch andere schon vor dem Problem standen. Es tut mir leid, wenn ich ein wenig weiter aushole, aber ich möchte schon vorab die Lösungsansätze, die mir bisher aufgefallen sind, erläutern...
Innerhalb eines Projekts werden Daten gesammelt, die als RTF- und
HTML-Ausgaben verfügbar gemacht werden sollen. Zusätzlich werden Grafiken eingebunden. Die Ausgabe erfolgt in Tabellenform, wobei zwei Spalten dargestellt werden. In der linken werden die Oberbegriffe der Daten ausgegeben, die dann in der rechten aufgelistet werden (teilweise mehrzeilig). Sollten zu einem Oberbegriff keine Daten vorhanden sein, wird dieser Punkt ausgelassen, es werden also keine "leeren" Punkte angezeigt.
Zur Erläuterung dieser "leeren" Punkte und der Ausgabemedien: Das Projekt erstellt unter anderem einen Lebenslauf. In jedem Lebenslauf kommen sehr unterschiedliche Datengruppen vor, so kann der eine vielleicht ein Studium vorweisen, der andere hingegen eine Berufsausbildung, und manch einer hat beides nicht. Im Lebenslauf soll nun nicht stehen, dass kein Studium vorhanden ist, sondern der Punkt "Studium" soll in diesem Fall gar nicht erst angezeigt werden (wäre ja sonst kontraproduktiv). Die RTF-Ausgabe soll möglich sein, da vom Benutzer her vielleicht zusätzliche Informationen eingebracht werden sollten, welche programmseitig nicht berücksichtigt wurden.
Für die
HTML-Ausgabe habe ich einen Wrapper geschrieben, der CSS-Definitionen für die Formatierung beinhaltet und die Tabellen rahmenlos darstellt. Das Ergebnis ist valide.
Mein Grundgedanke war nun, eben dieses
HTML-Ergebnis in ein TRichView einzulesen und danach als RTF zu speichern, was mir den Vorteil brächte, dass ich nicht zweierlei Arten von Templates pflegen müsste. Leider fällt diese Variante flach, da das TRV die CSS-Definitionen zwar akzeptiert, das gespeicherte Ergebnis aber - gelinde gesagt - absoluten Müll auswirft. Hierzu sollte erwähnt werden, dass die RTF-Datei idealerweise den Rahmen in Hintergrundfarbe darstellen sollte, da Wordpad mit der Tabelle nicht klarkommt. OpenOffice zeigt mir zwar halbwegs brauchbare Ergebnisse an, hier werden die einzelnen Tabellenzellen aber nicht in voller Breite dargestellt, so dass alleine schon Zellen, in denen nur zwei Wörter vorkommen, umgebrochen werden.
Der nächste Versuch lief über eDocEngine und den HTMLViewer. Ergebnis siehe oben...
Dann kam ich auf die Idee, einfach FreeReport zu nehmen und diesen mit VirtualTable zu "füttern" (die Daten werden nicht in einer Datenbank sondern typisiert gespeichert). Leider bin ich, was Reports angeht, nicht allzu erfahren, weshalb ich hier auch mit exessivem Googlen nicht weitergekommen bin. Ich hab's dann mit "Kryvich's Delphi Reporter" probiert, der mir persönlich sehr gut gefällt, bei dem ich aber keine Möglichkeit gefunden habe, die "leeren" Felder auszulassen (da ich hier keine Datenbänder definieren kann).
Nächste Möglichkeit war die Verwendung eines RTF-Templates, welches ich mit den Daten befülle. Hierbei kam ich aber an das Problem, dass die "leeren" Punkte von oben ja irgendwie gelöscht werden müssten und dass andere Punkte mehrfach auftreten können (z. B. im beruflichen Werdegang, bei dem in der linken Spalte der Zeitraum aufgelistet wird und in der rechten die dazugehörige Station). War - zumindest für mich - auch nicht durchführbar.
Zu guter Letzt bin ich, nachdem ich nun langsam aber sicher verzweifele, auf die Notlösung gekommen, auf die RTF-Ausgabe zu verzichten und statt dessen den Webbrowser als Editor zu verwenden und nach einer möglichen Bearbeitung (das war der Hintergrund der RTF-Variante) als PDF auszudrucken. Diese Lösung ist zwar halbwegs praktikabel, aber meines Erachtens nach eigentlich ein No-Go, da ich eigentlich auf den Browser verzichten wollte. Nebenher ist die Bearbeitung eines Textes im Browser auch nicht unbedingt mit der in einer Textverarbeitung vergleichbar, was eventuell weniger computererfahrene Benutzer abschrecken könnte.
Ach ja, was ich auch schon probiert habe, was sogar (mit sehr viel Geduld) funktioniert, ist, die RTF-Datei in ihre Einzelbestandteile zu zerlegen und dann schrittweise nach Bedarf zusammenzufügen. Das ist aber extrem aufwändig, bedeutet bei unterschiedlichen Templates eine gigantische Fehlerquelle und ist alles andere als professionell.
So, langer Text, kurzer Sinn:
Hat jemand eine Idee, wie ich das hinbekommen könnte? Ich bin für jeden Hinweis dankbar.
Gute Nacht
Opa