Mercurial > dive4elements > gnv-client
annotate gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 1052:b30361464775
The pdf format depends on the chart's aspect ratio (issue290).
gnv-artifacts/trunk@1126 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 26 May 2010 06:45:03 +0000 |
parents | 7f3154331bc1 |
children | 6169ddc827ac |
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 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
12 import de.intevation.artifacts.CallContext; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
13 |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
14 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
|
15 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
16 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
|
17 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
18 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
|
19 import java.awt.Transparency; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
20 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
21 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
|
22 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
23 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
|
24 |
617
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
25 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
|
26 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
27 import java.io.IOException; |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 import java.io.OutputStream; |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
29 import java.io.OutputStreamWriter; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
30 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
|
31 |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 import javax.imageio.ImageIO; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
33 |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
34 import org.apache.batik.svggen.SVGGraphics2D; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
35 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
|
36 |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
37 import org.apache.log4j.Logger; |
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 import org.jfree.chart.JFreeChart; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 /** |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
42 * This class is a helper class which supports some methods to export charts |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
43 * into specific formats. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
44 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
45 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
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 public class ChartExportHelper { |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
49 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
50 * Constant field to define A4 as default page size. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
51 */ |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
52 private static final String DEFAULT_PAGE_SIZE = "A4"; |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
53 |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
54 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
55 * Constant field to define UTF-8 as default encoding. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
56 */ |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
57 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
|
58 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
59 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
60 * Logger used for logging with log4j. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
61 */ |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 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
|
63 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
64 |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
65 /** |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
771
diff
changeset
|
66 * A method to export a <code>JFreeChart</code> as image to an |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
67 * <code>OutputStream</code> with a given format, width and height. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
68 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
69 * @param out OutputStream |
794
d0967fdee36f
Repaired JavaDoc in Export package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
778
diff
changeset
|
70 * @param chart JFreeChart object to be exported. |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
71 * @param format Format (e.g. png, gif, jpg) |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
72 * @param width Width, the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
73 * @param height Height, the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
74 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
75 * @throws IOException if writing image to OutputStream failed. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
76 */ |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
77 public static void exportImage( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 OutputStream out, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 JFreeChart chart, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
80 String format, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
81 int width, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
82 int height |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
83 ) |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
84 throws IOException |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
85 { |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
86 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
|
87 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
88 ImageIO.write( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 chart.createBufferedImage( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 width, height, Transparency.BITMASK, null |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 ), |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
92 format, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
93 out |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
94 ); |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
97 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
98 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
99 * A method to export a <code>JFreeChart</code> histogram as image to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
100 * <code>OutputStream</code> with a given format, width and height. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
101 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
102 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
103 * @param histograms Array of {@link de.intevation.gnv.chart.Chart} objects |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
104 * @param format A format (e.g. png, gif, jpg) |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
105 * @param width Width the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
106 * @param height Height the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
107 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
108 * @throws IOException if writing image to OutputStream failed. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
109 */ |
617
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
110 public static void exportHistograms( |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
111 OutputStream out, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
112 Chart[] histograms, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
113 String format, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
114 int width, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
115 int height) |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
116 throws IOException |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
117 { |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
118 log.info("export histograms"); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
119 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
120 int size = histograms.length; |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
121 BufferedImage image = new BufferedImage( |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
122 width, height*size, BufferedImage.TYPE_INT_RGB); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
123 Graphics2D g = image.createGraphics(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
124 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
125 for (int i = 0; i < size; i++) { |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
126 JFreeChart chart = histograms[i].generateChart(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
127 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
|
128 } |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
129 g.finalize(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
130 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
131 ImageIO.write(image, format, out); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
132 } |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
133 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
134 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
135 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
136 * A method to export a <code>JFreeChart</code> histogram as SVG to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
137 * <code>OutputStream</code>. |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
771
diff
changeset
|
138 * |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
139 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
140 * @param histograms Array of {@link de.intevation.gnv.chart.Chart} |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
141 * @param encoding Encoding, defaults to {@link #DEFAULT_ENCODING} if null |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
142 * @param width Width the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
143 * @param height Height the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
144 */ |
639
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
145 public static void exportHistogramsAsSVG( |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
146 OutputStream out, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
147 Chart[] histograms, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
148 String encoding, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
149 int width, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
150 int height |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
151 ) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
152 log.info("export histograms as svg"); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
153 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
154 if (encoding == null) |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
155 encoding = DEFAULT_ENCODING; |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
156 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
157 org.w3c.dom.Document document = XMLUtils.newDocument(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
158 SVGGraphics2D graphics = new SVGGraphics2D(document); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
159 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
160 int size = histograms.length; |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
161 for (int i = 0; i < size; i++) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
162 JFreeChart chart = histograms[i].generateChart(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
163 chart.draw(graphics, new Rectangle2D.Double( |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
164 0.0D, i*height,width,height)); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
165 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
166 graphics.finalize(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
167 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
168 try { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
169 graphics.stream(new OutputStreamWriter(out, encoding)); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
170 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
171 catch (SVGGraphics2DIOException svge) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
172 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
|
173 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
174 catch (UnsupportedEncodingException uee) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
175 log.error("Unsupported encoding: " + encoding, uee); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
176 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
177 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
178 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
179 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
180 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
181 * A method to export a <code>JFreeChart</code> as SVG to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
182 * <code>OutputStream</code>. |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
771
diff
changeset
|
183 * |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
184 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
185 * @param chart JFreeChart to be exported |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
186 * @param encoding Encoding, defaults to {@link #DEFAULT_ENCODING} if null |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
187 * @param width Width the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
188 * @param height Height the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
189 */ |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
190 public static void exportSVG( |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
191 OutputStream out, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
192 JFreeChart chart, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
193 String encoding, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
194 int width, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
195 int height |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
196 ) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
197 log.info("export chart as svg"); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
198 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
199 if (encoding == null) |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
200 encoding = DEFAULT_ENCODING; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
201 |
323
a88e15972c72
Updated Batik library to 1.7
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
321
diff
changeset
|
202 org.w3c.dom.Document document = XMLUtils.newDocument(); |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
203 SVGGraphics2D graphics = new SVGGraphics2D(document); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
204 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
205 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
|
206 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
207 try { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
208 graphics.stream(new OutputStreamWriter(out, encoding)); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
209 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
210 catch (SVGGraphics2DIOException svge) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
211 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
|
212 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
213 catch (UnsupportedEncodingException uee) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
214 log.error("Unsupported encoding: " + encoding, uee); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
215 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
216 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
217 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
218 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
219 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
220 * A method to export a <code>JFreeChart</code> as PDF to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
221 * <code>OutputStream</code>. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
222 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
223 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
224 * @param chart JFreeChart |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
225 * @param pageFormat String to specify a page format, {@link |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
226 * #DEFAULT_PAGE_SIZE} is used if no pageFormat is given |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
227 * @param landscape If this is true, the pdf is delivered in landscape |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
228 * format |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
229 * @param marginLeft Space to left border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
230 * @param marginRight Space to right border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
231 * @param marginTop Space to upper border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
232 * @param marginBottom Space to lower border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
233 */ |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
234 public static void exportPDF( |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
235 OutputStream out, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
236 JFreeChart chart, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
237 String pageFormat, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
238 float marginLeft, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
239 float marginRight, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
240 float marginTop, |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
241 float marginBottom, |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
242 CallContext context |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
243 ) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
244 log.info("export chart as pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
245 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
246 if (pageFormat == null) |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
247 pageFormat = DEFAULT_PAGE_SIZE; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
248 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
249 // max size of the chart |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
250 Rectangle page = PageSize.getRectangle(pageFormat); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
251 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
|
252 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
|
253 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
254 // the chart width |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
255 int chartWidth = (Integer) context.getContextValue("chart.width"); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
256 int chartHeight = (Integer) context.getContextValue("chart.height"); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
257 |
1052
b30361464775
The pdf format depends on the chart's aspect ratio (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1050
diff
changeset
|
258 boolean landscape = chartWidth > chartHeight ? true : false; |
b30361464775
The pdf format depends on the chart's aspect ratio (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1050
diff
changeset
|
259 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
260 int width = 0; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
261 int height = 0; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
262 if (landscape) { |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
263 width = pageHeight; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
264 height = pageWidth; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
265 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
266 else { |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
267 width = pageWidth; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
268 height = pageHeight; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
269 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
270 |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
271 if (chartWidth > width) { |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
272 log.warn("Width of the chart is too big for pdf -> resize it now."); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
273 double ratio = ((double)width) / chartWidth; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
274 chartWidth *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
275 chartHeight *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
276 log.debug("Resized chart to " + chartWidth + "x" + chartHeight); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
277 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
278 |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
279 if (chartHeight > height) { |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
280 log.warn("Height of the chart is too big for pdf -> resize it now."); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
281 double ratio = ((double)height) / chartHeight; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
282 chartWidth *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
283 chartHeight *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
284 log.debug("Resized chart to " + chartWidth + "x" + chartHeight); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
285 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
286 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
287 Document document = null; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
288 if (landscape) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
289 document = new Document(page.rotate()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
290 log.debug("Create landscape pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
291 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
292 else |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
293 document = new Document(page); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
294 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
295 try { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
296 PdfWriter writer = PdfWriter.getInstance(document, out); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
297 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
298 document.addSubject(chart.getTitle().getText()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
299 document.addCreationDate(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
300 document.open(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
301 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
302 PdfContentByte content = writer.getDirectContent(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
303 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
304 PdfTemplate template = content.createTemplate(width, height); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
305 Graphics2D graphics = template.createGraphics(width, height); |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
306 Rectangle2D area = new Rectangle2D.Double( |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
307 0.0D, 0.0D, chartWidth, chartHeight); |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
308 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
309 chart.draw(graphics, area); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
310 graphics.dispose(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
311 content.addTemplate(template, marginLeft, marginBottom); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
312 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
313 catch (DocumentException de) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
314 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
|
315 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
316 finally { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
317 document.close(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
318 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
319 } |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
320 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
321 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
322 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
323 * A method to export <code>JFreeChart</code> histograms as PDF to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
324 * <code>OutputStream</code>. Each histogram contained in histograms is |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
325 * drawn to an own page in the resulting pdf. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
326 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
327 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
328 * @param histograms JFreeChart histograms |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
329 * @param pageFormat String to specify a page format, {@link |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
330 * #DEFAULT_PAGE_SIZE} is used if no pageFormat is given |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
331 * @param landscape If this is true, the pdf is delivered in landscape |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
332 * format |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
333 * @param marginLeft Space to left border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
334 * @param marginRight Space to right border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
335 * @param marginTop Space to upper border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
336 * @param marginBottom Space to lower border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
337 */ |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
338 public static void exportHistogramsAsPDF( |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
339 OutputStream out, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
340 Chart[] histograms, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
341 String pageFormat, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
342 boolean landscape, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
343 float marginLeft, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
344 float marginRight, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
345 float marginTop, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
346 float marginBottom |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
347 ) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
348 log.info("export histogram as pdf."); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
349 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
350 if (pageFormat == null) |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
351 pageFormat = DEFAULT_PAGE_SIZE; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
352 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
353 Rectangle page = PageSize.getRectangle(pageFormat); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
354 int pageWidth = |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
355 (int) (page.getRight(marginRight) - page.getLeft(marginLeft)); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
356 int pageHeight = |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
357 (int) (page.getTop(marginTop) - page.getBottom(marginBottom)); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
358 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
359 Document document = null; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
360 if (landscape) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
361 document = new Document(page.rotate()); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
362 log.debug("Create landscape pdf."); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
363 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
364 else |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
365 document = new Document(page); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
366 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
367 try { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
368 PdfWriter writer = PdfWriter.getInstance(document, out); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
369 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
370 document.addCreationDate(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
371 document.open(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
372 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
373 PdfContentByte content = writer.getDirectContent(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
374 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
375 int width = 0; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
376 int height = 0; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
377 if (landscape) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
378 width = pageHeight; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
379 height = pageWidth; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
380 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
381 else { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
382 width = pageWidth; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
383 height = pageHeight; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
384 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
385 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
386 int size = histograms.length; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
387 for (int i = 0; i < size; i++) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
388 if (i > 0) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
389 document.newPage(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
390 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
391 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
392 JFreeChart chart = histograms[i].generateChart(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
393 PdfTemplate template = content.createTemplate(width, height); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
394 Graphics2D graphics = template.createGraphics(width, height); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
395 Rectangle2D area = new Rectangle2D.Double( |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
396 0.0D, 0.0D,width,height); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
397 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
398 chart.draw(graphics, area); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
399 graphics.dispose(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
400 content.addTemplate(template, marginLeft, marginBottom); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
401 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
402 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
403 catch (DocumentException de) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
404 log.error("Error while exporting chart to pdf.", de); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
405 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
406 finally { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
407 document.close(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
408 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
409 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
410 } |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
411 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |