2 Stimmen

BIRT PDF-Bericht: feste Tabellenhöhe?

Ich versuche eine Tabelle darzustellen, um Produkte (Zeilen) auf einer einzelnen A4-Seite mit festem Layout anzuzeigen. Ich schaffe es, eine Tabelle mit Kopf-/Detail-/Fußzeilenabschnitten hinzuzufügen, aber ich kann keine Mindesthöhe für den Detailbereich festlegen (zum Beispiel 150 mm). Wenn ich eine Höhe von 150 mm in der Detailzeile festlege, wird jede Zeile diese Höhe haben. Ich möchte jedoch, dass jede Zeile eine minimale Höhe hat (könnte mehrere Zeilen sein, wenn der Inhalt einiger Spalten umgebrochen wird).

        +---------+--------+--------------+
Tbl Hdr | col1    | col2   |   col3       |
        +---------+--------+--------------+
Tbl Dtl | [val1]  | [val2] | [val3]       |
        +---------+--------+--------------+
        |                                 |  <-sollte eine variable Höhe haben
        +---------+--------+--------------+
Tbl Ftr |         |        |     Total    |
        +---------+--------+--------------+

Wenn ich keine Höhe für die Detailzeile festlege, wird der Footer direkt unterhalb der Detailzeilen angezeigt, anstatt am unteren Rand der Seite zu kleben.

Ich hoffe, das ergibt Sinn (falls nicht, könnte ich weitere Details bereitstellen). Jede Hilfe wäre sehr willkommen.

1voto

MystikSpiral Punkte 5010

Ein BIRT-Bericht verwendet einen Auto-Layout-Engine, um den Inhalt für den aktuellen Kontext zu optimieren. Dies soll sicherstellen, dass der Bericht unabhängig vom Display/Bildschirm so gut wie möglich aussieht. Tatsächlich ist es beabsichtigt, das Leerzeichen zu minimieren, wenn nicht sogar zu beseitigen, das Sie zu erhalten versuchen.

Eine Möglichkeit, die Sie in Betracht ziehen könnten, wäre das Hinzufügen einer zweiten Detailzeile. Sie können dann dieser Detailzeile eine feste Höhe geben und sie den übrigen Leerzeichen ausfüllen lassen. Alternativ platzieren Sie eine zweite Tabelle im Fußbereich der Master-Seite, die die gewünschten Daten rendern wird und diese am unteren Rand der Seite binden. Dies hat den Vorteil, sich unabhängig vom Seitentyp (Brief, A4, etc.) am unteren Rand der Seite zu befinden.

1voto

ESP Punkte 959

Eine Alternative, wenn ein Footer nicht ausreicht:

Ich habe einen Kunden, der eine feste Tabellengröße mit einer festen Zeilenhöhe wollte. Es endete damit, dass 10 Zeilen angezeigt wurden.

Um den Auto-Formatter zu umgehen:

Erstellen Sie eine Variable var rowCount = 0; reportContext.setGlobalVariable("rowCount",rowCount); im Initialize Skript.

Fügen Sie in Ihrem Abrufskript rowCount++; kurz vor return(true); hinzu. Ändern Sie dann die if(!lineDataSet.fetch()) Anweisung wie folgt:

if(!lineDataSet.fetch()){
    if(rowCount % 10 >0){
        row["column1"] = "";
        rowCount++;
        return(true);
    }
    return(false);
}

Dies kann in vielen Szenarien nützlich sein, wenn Sie gefälschte Daten erstellen müssen, um Tabellen aufzufüllen (z. B. fehlende Daten).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X