Rahmen um Tabellen per UNO-API zuverlässig setzen
Verfasst: Di 15. Jul 2014, 15:19
Hallo,
ich verwende LibreOffice im headless-Modus als eine Art Report-Generator (schon seit OpenOffice 2.0). Dabei wird aus einem Java-Programm heraus mittels UNO-API ein ODT-Dokument als Vorlage geladen und dann über das UNO-API HTML-Texte und Tabellen importiert, um so den Report mit Inhalten zu füllen.
Funktioniert alles zuverlässig, nur leider werden die Rahmen von aus HTML importierten Tabellen unschön dargestellt (breit, grau, Gitternetz und Umrahmung unterschiedlich dick (in LO)), und auch die HTML Style/CSS-Angaben werden nicht wirklich beachtet.
Daher verfolge ich aktuell den Ansatz, dass ich nach Aufbereitung des Dokuments (Vorlage + importiertes HTML) alle Tabellen durchiteriere und dann mittels TableBorder/TableBorder2 versuche, die Rahmen selbst passend umzugestalten.
Das funktioniert "im Kleinen" (d.h. mit vielen kurzen Tabellen (z.B. 20 Zeilen/Tabelle)) sehr gut. Wenn längere, über mehrere Seiten umbrechende Tabellen dabei sind kommt es (reproduzierbar) vor, dass einige - aber nicht alle - Tabellen die geänderten Rahmen nicht oder nur teilweise annehmen...
Schematisch:
Dokument -> XTextTablesSupplier -> XNameAccess => alle Tabellennamen
Schleife über alle Tabellennamen:
XTextTable(name) -> XPropertySet -> get/set (TableBorder, TableBorder2)
Kennt jemand das Phänomen oder besser, eine Lösung?
Besten Dank für Infos & Tipps!
Oliver
ich verwende LibreOffice im headless-Modus als eine Art Report-Generator (schon seit OpenOffice 2.0). Dabei wird aus einem Java-Programm heraus mittels UNO-API ein ODT-Dokument als Vorlage geladen und dann über das UNO-API HTML-Texte und Tabellen importiert, um so den Report mit Inhalten zu füllen.
Funktioniert alles zuverlässig, nur leider werden die Rahmen von aus HTML importierten Tabellen unschön dargestellt (breit, grau, Gitternetz und Umrahmung unterschiedlich dick (in LO)), und auch die HTML Style/CSS-Angaben werden nicht wirklich beachtet.
Daher verfolge ich aktuell den Ansatz, dass ich nach Aufbereitung des Dokuments (Vorlage + importiertes HTML) alle Tabellen durchiteriere und dann mittels TableBorder/TableBorder2 versuche, die Rahmen selbst passend umzugestalten.
Das funktioniert "im Kleinen" (d.h. mit vielen kurzen Tabellen (z.B. 20 Zeilen/Tabelle)) sehr gut. Wenn längere, über mehrere Seiten umbrechende Tabellen dabei sind kommt es (reproduzierbar) vor, dass einige - aber nicht alle - Tabellen die geänderten Rahmen nicht oder nur teilweise annehmen...
Schematisch:
Dokument -> XTextTablesSupplier -> XNameAccess => alle Tabellennamen
Schleife über alle Tabellennamen:
XTextTable(name) -> XPropertySet -> get/set (TableBorder, TableBorder2)
Kennt jemand das Phänomen oder besser, eine Lösung?
Besten Dank für Infos & Tipps!
Oliver