JasperReport, IReport, JFreeChart -> Chartauflösung verbessern?

teppi

Erfahrenes Mitglied
Hallo !

Ich benutze IReport um Reportvorlagen zu erstellen, welche ich dann direkt in Java kompiliere. Dabei füge ich ein (JFreeChart) Diagramm hinzu, welches ich in IReport als java.awt.Image deklariert habe.

Nach dem Erstellen des Reports exportiere ich die ganze Geschichte in ein PDF File. Also eigentlich ist es nur ein PDF Stream, aber das tut hier nix zur Sache, denk ich.

Das klappt eigentlich auch alles ganz gut. Nur die Qualität des Bildes leidet bei diesem Export ganz enorm, wenn ich das Bild als BufferedImage erstelle. Es sieht total verpixelt aus. Ich hab mittlerweile herausgefunden, dass man dem wohl mit einem Vektorbildformat wie PNG entgegenwirken kann, aber ich finde nicht heraus, wie ich das 1) in IReport deklarieren muss/kann, so dass es nicht zu einem Compilierungsfehler kommt und 2) in welchem Format ich das dann dem JasperReports Framework übergeben muss ..

Falls damit jemand schon mal Erfahrungen gemacht hat und mir Tipps geben kann, wäre ich sehr dankbar. ;)

Gruß Stefan
 
Also ich hab jetzt eine Lösung gefunden, die mir reicht .. Ich wollte halt vermeiden, eine extra eine Datei zu erstellen, da es sich um ein Webprojekt handelt. Folgender Code erstellt mir einen Stream mit einem PNG Bild. Die Qulität ist auf jeden Fall besser als einfach nur ein BufferedImage zu benutzen. In IReport habe ich als Bildquelle auf InputSream gestellt.

Hier der Code:

myChart.getChart() liefert ein BufferedImage ..

Java:
ByteArrayOutputStream out = new ByteArrayOutputStream();
      
      try {
        ImageIO.write( myChart.getChart(), "png", out );
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      
      ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); 

      parameters.put("diagramm", in);
      
      jasperPrint = JasperFillManager.fillReport(
          jasperReport, parameters, new JREmptyDataSource());
      JasperExportManager.exportReportToPdfFile(
          jasperPrint, "simple_report.pdf");

Gruß Stefan
 
hallo stefan ,
ich hab dein beitrag gelesen und hab eine Frage, die vielleicht du mir beantworten kannst .
ich benutze Jasperreport um Berichte über Geoinformationen zu machen. in den Berichten sollten auch Charts angebunden werden.
ich hab verschiedenes versucht aber leider ohne Erfolg.

kannst du mir vielleicht den code schicken wie man das macht.

danke
ziad
 
Zurück