2016-09-05 3 views
0

Ich versuche, einen Bericht mit einem Layout zu erstellen, wie im Bild gezeigt. Der Wert jedes Felds wird auf die volle Breite des Berichts unterstrichen. Wenn es mehr als eine Zeile belegt, ist jede Zeile unterstrichen. Und es gibt auch einen kurzen Kommentar unter der ersten Zeile, der die Bedeutung des Feldes erklärt (in Klammern gezeigt).BIRT-Bericht - Mehrzeiliger Text auf die volle Breite unterstrichen

Als wir das gleiche Problem mit JasperReports hatten, mussten wir eine benutzerdefinierte Komponente für diesen Zweck erstellen. Weiß jemand, wie die Lösung in BIRT aussehen könnte? enter image description here

+0

Ich denke nicht, dass dies mit BIRT möglich ist. – hvb

+0

Ja, das ist, was ich dachte, aber ich hatte gehofft, vielleicht könnte dies mit Javascript oder etwas erreicht werden ... – koszek

+0

Sie könnten ein GridLayout oder eine Tabelle erstellen und den Rand oder die Zellenschraube machen. Es wird wie ein unterstrichenes Formularfeld aussehen. – Simulant

Antwort

0

Der einzige Weg, an den ich denken kann, ist die Berechnung der Zeile selbst, z. Konvertieren Sie Ihren langen Text in eine Reihe von einzelnen Zeilen. Angenommen, Sie finden einen Weg, dies in einem skriptgesteuerten Datensatz zu tun, indem Sie den langen Text als Eingabe verwenden. Sie könnten dann ein Tabellenelement verwenden, um diese einzelnen Zeilen im Layout zu rendern. Verwenden Sie den unteren Rand, um die Unterstreichungen zu erstellen (oder eine leere zusätzliche Detailzeile mit einem oberen Rand und einer Höhe von 2pt, um einen schönen Zeilenabstand zu erzeugen).

Wie sieht nun dieser skriptgestützte Datensatz aus? Ich denke, wenn Sie den Quellcode von BIRT studieren, werden Sie wahrscheinlich irgendwo eine Dienstprogrammfunktion finden, die die Breite (in welchen Einheiten) eines gegebenen Textes in einer gegebenen Schriftart und Größe berechnet. Vielleicht ist dies auch irgendwo in java.awt oder in iText (com.lowagie.text).

Dann ist es ist möglich, diese Funktion aus dem Inneren von Java Script aufzurufen und - mit mehr oder weniger Logik - dies als Grundlage für Ihre Skriptdatei zu verwenden. Aber ich denke, das wird ein paar Stunden dauern.

Wenn Sie das schaffen, wäre es nett, wenn Sie die Lösung hier posten.