Mercurial > dive4elements > gnv-client
annotate gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 639:a94ed2755480
Implemented SVG export for histograms.
gnv-artifacts/trunk@724 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 02 Mar 2010 14:48:32 +0000 |
parents | 65f09139e9b3 |
children | e5f1e868ee3e |
rev | line source |
---|---|
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.gnv.exports; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
2 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
3 import com.lowagie.text.Document; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
4 import com.lowagie.text.DocumentException; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
5 import com.lowagie.text.PageSize; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
6 import com.lowagie.text.Rectangle; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
7 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
8 import com.lowagie.text.pdf.PdfContentByte; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
9 import com.lowagie.text.pdf.PdfTemplate; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
10 import com.lowagie.text.pdf.PdfWriter; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
11 |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
12 import de.intevation.artifactdatabase.XMLUtils; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
13 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
14 import de.intevation.gnv.chart.Chart; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
15 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
16 import java.awt.Graphics2D; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
17 import java.awt.Transparency; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
18 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
19 import java.awt.geom.Rectangle2D.Double; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
20 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
21 import java.awt.geom.Rectangle2D; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
22 |
617
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
23 import java.awt.image.BufferedImage; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
24 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
25 import java.io.IOException; |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 import java.io.OutputStream; |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
27 import java.io.OutputStreamWriter; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
28 import java.io.UnsupportedEncodingException; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
29 |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 import javax.imageio.ImageIO; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
32 import org.apache.batik.svggen.SVGGraphics2D; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
33 import org.apache.batik.svggen.SVGGraphics2DIOException; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
34 |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
35 import org.apache.log4j.Logger; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
36 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
37 import org.jfree.chart.JFreeChart; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
38 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
39 /** |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 */ |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 public class ChartExportHelper { |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
44 private static final String DEFAULT_PAGE_SIZE = "A4"; |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
45 private static final String DEFAULT_ENCODING = "UTF-8"; |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
46 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 private static Logger log = Logger.getLogger(ChartExportHelper.class); |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 public static void exportImage( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 OutputStream out, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
51 JFreeChart chart, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 String format, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 int width, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 int height |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 ) |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 throws IOException |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 { |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
58 log.info("export chart as png"); |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
60 ImageIO.write( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
61 chart.createBufferedImage( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 width, height, Transparency.BITMASK, null |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 ), |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
64 format, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
65 out |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
66 ); |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
67 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
68 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
69 |
617
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
70 public static void exportHistograms( |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
71 OutputStream out, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
72 Chart[] histograms, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
73 String format, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
74 int width, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
75 int height) |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
76 throws IOException |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
77 { |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
78 log.info("export histograms"); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
79 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
80 int size = histograms.length; |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
81 BufferedImage image = new BufferedImage( |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
82 width, height*size, BufferedImage.TYPE_INT_RGB); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
83 Graphics2D g = image.createGraphics(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
84 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
85 for (int i = 0; i < size; i++) { |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
86 JFreeChart chart = histograms[i].generateChart(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
87 chart.draw(g, new Rectangle2D.Double(0.0D, i*height, width, height)); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
88 } |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
89 g.finalize(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
90 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
91 ImageIO.write(image, format, out); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
92 } |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
93 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
94 |
639
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
95 public static void exportHistogramsAsSVG( |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
96 OutputStream out, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
97 Chart[] histograms, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
98 String encoding, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
99 int width, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
100 int height |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
101 ) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
102 log.info("export histograms as svg"); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
103 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
104 if (encoding == null) |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
105 encoding = DEFAULT_ENCODING; |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
106 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
107 org.w3c.dom.Document document = XMLUtils.newDocument(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
108 SVGGraphics2D graphics = new SVGGraphics2D(document); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
109 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
110 int size = histograms.length; |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
111 for (int i = 0; i < size; i++) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
112 JFreeChart chart = histograms[i].generateChart(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
113 chart.draw(graphics, new Rectangle2D.Double( |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
114 0.0D, i*height,width,height)); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
115 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
116 graphics.finalize(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
117 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
118 try { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
119 graphics.stream(new OutputStreamWriter(out, encoding)); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
120 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
121 catch (SVGGraphics2DIOException svge) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
122 log.error("Error while writing svg export to output stream.", svge); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
123 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
124 catch (UnsupportedEncodingException uee) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
125 log.error("Unsupported encoding: " + encoding, uee); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
126 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
127 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
128 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
129 |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
130 public static void exportSVG( |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
131 OutputStream out, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
132 JFreeChart chart, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
133 String encoding, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
134 int width, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
135 int height |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
136 ) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
137 log.info("export chart as svg"); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
138 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
139 if (encoding == null) |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
140 encoding = DEFAULT_ENCODING; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
141 |
323
a88e15972c72
Updated Batik library to 1.7
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
321
diff
changeset
|
142 org.w3c.dom.Document document = XMLUtils.newDocument(); |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
143 SVGGraphics2D graphics = new SVGGraphics2D(document); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
144 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
145 chart.draw(graphics, new Rectangle2D.Double(0.0D, 0.0D,width,height)); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
146 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
147 try { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
148 graphics.stream(new OutputStreamWriter(out, encoding)); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
149 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
150 catch (SVGGraphics2DIOException svge) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
151 log.error("Error while writing svg export to output stream.", svge); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
152 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
153 catch (UnsupportedEncodingException uee) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
154 log.error("Unsupported encoding: " + encoding, uee); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
155 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
156 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
157 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
158 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
159 public static void exportPDF( |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
160 OutputStream out, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
161 JFreeChart chart, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
162 String pageFormat, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
163 boolean landscape, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
164 float marginLeft, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
165 float marginRight, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
166 float marginTop, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
167 float marginBottom |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
168 ) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
169 log.info("export chart as pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
170 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
171 if (pageFormat == null) |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
172 pageFormat = DEFAULT_PAGE_SIZE; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
173 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
174 Rectangle page = PageSize.getRectangle(pageFormat); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
175 int pageWidth = (int) (page.getRight(marginRight) - page.getLeft(marginLeft)); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
176 int pageHeight = (int) (page.getTop(marginTop) - page.getBottom(marginBottom)); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
177 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
178 Document document = null; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
179 if (landscape) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
180 document = new Document(page.rotate()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
181 log.debug("Create landscape pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
182 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
183 else |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
184 document = new Document(page); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
185 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
186 try { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
187 PdfWriter writer = PdfWriter.getInstance(document, out); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
188 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
189 document.addSubject(chart.getTitle().getText()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
190 document.addCreationDate(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
191 document.open(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
192 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
193 PdfContentByte content = writer.getDirectContent(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
194 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
195 int width = 0; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
196 int height = 0; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
197 if (landscape) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
198 width = pageHeight; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
199 height = pageWidth; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
200 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
201 else { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
202 width = pageWidth; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
203 height = pageHeight; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
204 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
205 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
206 PdfTemplate template = content.createTemplate(width, height); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
207 Graphics2D graphics = template.createGraphics(width, height); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
208 Rectangle2D area = new Rectangle2D.Double(0.0D, 0.0D,width,height); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
209 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
210 chart.draw(graphics, area); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
211 graphics.dispose(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
212 content.addTemplate(template, marginLeft, marginBottom); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
213 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
214 catch (DocumentException de) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
215 log.error("Error while exporting chart to pdf.", de); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
216 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
217 finally { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
218 document.close(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
219 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
220 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
221 } |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
222 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |