JasperReports HTML- und PDF-Ausgabe

8

Ich möchte eine dynamische Berichtsseite mit JSP erstellen. Grundsätzlich sollte es folgende Teile enthalten:

  1. Filter: Der Benutzer kann die Filterbedingungen festlegen und eine Filtertaste drücken.
  2. HTML-Ausgabe: Das Ergebnis des Filters kann hier eingesehen werden. Es ist eine große HTML-Seite (oder mehrere, wenn eine Seite zu groß wäre). Es kann Links zu anderen Teilen des Systems enthalten.
  3. PDF-Ausgabe: Der Benutzer sollte in der Lage sein, eine PDF-Version des Berichts zu Druck- oder Archivierungszwecken zu speichern.

Anstatt alles selbst zu implementieren, möchte ich eine Java-Berichtsbibliothek verwenden. Daher habe ich meinen Bericht mithilfe von JasperReports erstellt. Die PDF-Ausgabe ist wirklich nett, aber der HTML-Export des Berichts ist nicht für meine Zwecke geeignet.

Der HTML-Export von JasperReport erstellt eine HTML-Datei mit viel fest verdrahtetem Code und ziemlich zufälligen Konfigurationsoptionen. Beispielsweise wird standardmäßig eine Tabelle mit weißem Hintergrund erstellt ( <table style="... bgcolor="white" ... "> ), die mit IS_WHITE_PAGE_BACKGROUND Option, andererseits cellpadding="0" cellspacing="0" border="0" sind im table -Tag festverdrahtet. Es ist auch seltsam (und macht CSS-Styling schwierig), dass anstelle von span-Klassen die HTML-Datei <span style="font-family: sansserif; color: #000000; font-size: 10.0px;"> für alle meine Felder enthält.

Natürlich kann ich die HTML-Ausgabe mit JSP implementieren, aber das bedeutet, ich muss die Ausgabe zweimal entwerfen (einmal in jrxml für JasperReports, einmal in JSP), und ich muss Berichtsfunktionen neu implementieren (wie Zwischensummenberechnung, total) Berechnung, Gruppierung ...), die gegen das Prinzip DRY verstößt.

Was ist die beste Vorgehensweise, um dies zu implementieren? Ist es möglich, einen besseren HTML-Export mit JasperReports zu erstellen?

    
asalamon74 06.11.2009, 08:07
quelle

1 Antwort

12

Es ist nicht einfach, die HTML-Ausgabe von JasperReports zu ändern. Hier ist ein altes Zitat auf warum:

  

... Dokumentformate wie HTML oder XLS,   unterstützt keine absolute Positionierung von   die Text- und Grafikelemente. Das   Der Inhalt solcher Dokumente ist angeordnet   in einer Raster- oder Tabellenstruktur. Von   Natürlich mögen manche das absolut behaupten   Positionierung von Elementen in HTML ist   möglich dank CSS, aber du kannst es sein   sicher, dass der CSS-Standard   Funktionalität ist weit davon entfernt zu sein   in allen Browsern oder das implementiert   Das gleiche HTML-Dokument wird nicht angezeigt   überall gleich.

     

Dies ist der Grund warum die ^ JasperReports eingebauten Exportprogramme, die HTML erzeugen,   XLS- oder CSV-Dokumente verwenden ein spezielles   Algorithmus, um die   Elemente, die in einem bestimmten Dokument vorhanden sind   Seite in einer Art Gitter. Wann   Die Berichtsentwürfe sind sehr komplex oder   agglomeriert, vom Absoluten übergehend   Positionierung zum Raster- oder Tabellenlayout   produziert sehr komplexe Tabellen mit vielen   Unbenutzte Zeilen und Spalten, um es zu machen   für den leeren Raum zwischen Elementen   oder ihre spezielle Ausrichtung.

Quelle

Wie bereits erwähnt, ist es alt, aber soweit ich das beurteilen kann, ist es immer noch korrekt.

Die Liste der Dinge, die Sie für den HTML-Exporter steuern können, ist sehr begrenzt:

%Vor%

Dokumentation hier

Ich habe mich von HTML abgewandt und verwende nur PDF, Excel und CSV, es sei denn, Kunden verlangen HTML. Wenn Sie HTML verwenden müssen, können Sie ein Stylesheet für die Arbeit mit Ihrer Site definieren und jQuery verwenden, um alle Inline-Stile zu entfernen, damit das Stylesheet übernimmt. Etwas wie:

%Vor%     
beggs 06.11.2009, 08:28
quelle