JFreeChart und JasperReports

DonChiechot

Grünschnabel
Hallo Community,

ich benötige mal wieder eure Hilfe bei einem Problem, welches für mich unverständlich ist.

Ich bin momentan dabei eine Applitkation zu schreiben in der ich sehr viele Diagramme mittels JFreeChart eingebaut habe. Das passt auch alles ganz gut. Gleichzeitig nutze ich die Reporting Library JasperReports zur Erstellung diverser Berichte (die Berichte enthalten auch Diagramme).

Problem ist nun, sobald ich aus der Anwendung heraus einen Bericht erstellen lasse, ändert sich das Aussehen meiner Diagramme in der GUI. Diagramme die bereits angezeigt werden verändern sich nicht, aber sobald ich ein neues Diagramm zeichnen lasse sieht es nicht mehr so aus wie zuvor.

Zur Verdeutlichung nochmal ein Beispiel mit Code:
Java:
private JFreeChart createQuantityChart(CategoryDataset dataset) {

        // create the chart...
        JFreeChart chart = ChartFactory.createBarChart(
            null,  // chart title
            null,                  // domain axis label
            null,                     // range axis label
            dataset,                     // data
            PlotOrientation.VERTICAL,    // orientation
            true,                        // include legend
            true,                        // tooltips?
            false                        // URLs?
        );
        chart.setPadding(new RectangleInsets(0,0,6,0));
        chart.getLegend().setItemFont(chart.getLegend().getItemFont().deriveFont(Font.PLAIN, 11));
        chart.getLegend().setFrame(BlockBorder.NONE);
        
        // get a reference to the plot for further customisation...
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setDomainGridlinesVisible(true);
        plot.setRangePannable(true);
        plot.setRangeZeroBaselineVisible(false);

        // set the range axis to display integers only...
        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        rangeAxis.setRangeType(RangeType.POSITIVE);

        // disable bar outlines...
        LayeredBarRenderer renderer = new LayeredBarRenderer();
        renderer.setDrawBarOutline(false);
        renderer.setSeriesPaint(0, Color.red);
        renderer.setSeriesPaint(1, Color.green);
        plot.setRenderer(renderer);
        

        // for this renderer, we need to draw the first series last...
        plot.setRowRenderingOrder(SortOrder.DESCENDING);

        return chart;
    }

Rufe ich die Funktion auf, bevor ich einen Bericht erstellen lasse erscheint der Chart in folgendem Aussehen (so soll es auch sein):
chart.jpg

Nachdem ich mit JasperReports einen Report erstellt habe, rufe ich selbige Funktion nochmal auf. Das Ergebnis ist dann folgendes:
chart_error.jpg

Meine Fragen:
1. Woher kommt das?
2. Wie krieg ich das weg? :)

Vielen Dank für eure Hilfe!
 
Zuletzt bearbeitet:
Reports

Hallo Zusammen,

ich hoffe, dass ich hier richtig bin.

ich Brauche eure Hilfe. Es geht um ein Reports-Tool,das folgende Anforderung erfüllt:

Auswahl von Produkten zum Vergleich:
- Jasper
- Birt
- Crystal Reports
- Apache FOP
- FileMaker (neu eingefügt)
- Pentaho (neu eingefügt)
- weitere Konkurrenzprodukte

Analyse u.a. folgender Fragestellungen:
- wie leicht kann man Reports anpassen/erweitern
- Laden von Reports vom Serverfilesystem möglich? Oder nur freigegebenes Dateisystem
- Nach Änderung durch einen Anwender kann ein Report gespeichert werden und wird von Verarbeitungsprozess direkt verwendet? (Änderung wirkt sofort nach Speichern, oder muss kompiliert werden?) Reportanpassung live ohne Softwareupdate möglich?
- Reports werden in eigener Engine erzeugt? (eigener Server)
- Reports können im Dateisystem abgelegt werden?
- Lizenzkosten
- Skalierbarkeit
- Stabilität
- Generieren von Grafiken möglich? (nur optionales Feature)
- Weitere Analysepunkte sind für den Vergleich zu ergänzen.
- Mögliche Exportformate (PDF, XLS, CSV, XML, ...)

Weitere zu klärende Fragen:
- Asynchroner Aufruf / Synchroner Aufruf für Webanwendung möglich?
- Erzeugung einer Meta-Datei möglich? Oder selbst umsetzen?
- Wie werden Daten aus JBoss an Engine übergeben? JMS (zb. außerhalb vom Anwendungs-JBoss neu geclusterte Queue, z.B. in neuem JBoss oder anderer Software), XML, Java Object, direkt Datenbank


Möglicher Modulaufbau zur Analyse könnte sein:

1)
- Webanwendung
- Proxymodul zur Engine
- Engine

2)
- Mailingfunktion
- Proxymodul zur Engine und DMS D3
- Engine

Die Reportengine muss an sich immer das PDF synchron zurückgeben, da ein Proxymodul dieses für die weitere Verarbeitung braucht. Entweder wird dieses dem User zurückgegeben (an Webanwendung durchreichen), per E-Mail verschickt (an Mailmodul weitergereicht) und/oder im DMS abelegt (an D3 weiterreichen).
Weiterreichen der Daten müsste im Binärfomrat erfolgen, wenn ich mich nicht irre.


Danke schön für ihre Hilfe.
Gruß Mussa
 
Zurück