Mercurial > dive4elements > gnv-client
annotate gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 623:65f09139e9b3
Fixed file handle leak when writing meta data.
gnv-artifacts/trunk@694 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 21 Feb 2010 21:05:55 +0000 |
parents | 3d13fa281a7e |
children | a94ed2755480 |
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 |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
95 public static void exportSVG( |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
96 OutputStream out, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
97 JFreeChart chart, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
98 String encoding, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
99 int width, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
100 int height |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
101 ) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
102 log.info("export chart as svg"); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
103 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
104 if (encoding == null) |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
105 encoding = DEFAULT_ENCODING; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
106 |
323
a88e15972c72
Updated Batik library to 1.7
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
321
diff
changeset
|
107 org.w3c.dom.Document document = XMLUtils.newDocument(); |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
108 SVGGraphics2D graphics = new SVGGraphics2D(document); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
109 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
110 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
|
111 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
112 try { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
113 graphics.stream(new OutputStreamWriter(out, encoding)); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
114 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
115 catch (SVGGraphics2DIOException svge) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
116 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
|
117 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
118 catch (UnsupportedEncodingException uee) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
119 log.error("Unsupported encoding: " + encoding, uee); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
120 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
123 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
124 public static void exportPDF( |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
125 OutputStream out, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
126 JFreeChart chart, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
127 String pageFormat, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
128 boolean landscape, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
129 float marginLeft, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
130 float marginRight, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
131 float marginTop, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
132 float marginBottom |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
133 ) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
134 log.info("export chart as pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
135 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
136 if (pageFormat == null) |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
137 pageFormat = DEFAULT_PAGE_SIZE; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
138 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
139 Rectangle page = PageSize.getRectangle(pageFormat); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
140 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
|
141 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
|
142 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
143 Document document = null; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
144 if (landscape) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
145 document = new Document(page.rotate()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
146 log.debug("Create landscape pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
147 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
148 else |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
149 document = new Document(page); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
150 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
151 try { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
152 PdfWriter writer = PdfWriter.getInstance(document, out); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
153 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
154 document.addSubject(chart.getTitle().getText()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
155 document.addCreationDate(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
156 document.open(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
157 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
158 PdfContentByte content = writer.getDirectContent(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
159 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
160 int width = 0; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
161 int height = 0; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
162 if (landscape) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
163 width = pageHeight; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
164 height = pageWidth; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
165 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
166 else { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
167 width = pageWidth; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
168 height = pageHeight; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
169 } |
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 PdfTemplate template = content.createTemplate(width, height); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
172 Graphics2D graphics = template.createGraphics(width, height); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
173 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
|
174 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
175 chart.draw(graphics, area); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
176 graphics.dispose(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
177 content.addTemplate(template, marginLeft, marginBottom); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
178 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
179 catch (DocumentException de) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
180 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
|
181 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
182 finally { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
183 document.close(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
184 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
185 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
186 } |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
187 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |