annotate gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 617:3d13fa281a7e

Added new ouput mode: histogram. gnv-artifacts/trunk@688 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 15 Feb 2010 11:44:01 +0000
parents a88e15972c72
children 65f09139e9b3
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;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
7 import com.lowagie.text.pdf.PdfContentByte;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
8 import com.lowagie.text.pdf.PdfTemplate;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
9 import com.lowagie.text.pdf.PdfWriter;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
10
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.awt.Transparency;
617
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
12 import java.awt.Graphics;
320
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
13 import java.awt.Graphics2D;
617
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
14 import java.awt.geom.Point2D;
320
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
15 import java.awt.geom.Rectangle2D;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
16 import java.awt.geom.Rectangle2D.Double;
617
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
17 import java.awt.image.BufferedImage;
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import java.io.OutputStream;
321
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
19 import java.io.OutputStreamWriter;
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import java.io.IOException;
321
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
21 import java.io.UnsupportedEncodingException;
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 import javax.imageio.ImageIO;
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
321
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
24 import org.apache.batik.svggen.SVGGraphics2D;
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
25 import org.apache.batik.svggen.SVGGraphics2DIOException;
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 import org.apache.log4j.Logger;
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import org.jfree.chart.JFreeChart;
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
323
a88e15972c72 Updated Batik library to 1.7
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 321
diff changeset
30 import de.intevation.artifactdatabase.XMLUtils;
617
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
31 import de.intevation.gnv.chart.Chart;
323
a88e15972c72 Updated Batik library to 1.7
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 321
diff changeset
32
320
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
33
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 /**
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 * @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
36 */
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 public class ChartExportHelper {
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
320
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
39 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
40 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
41
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 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
43
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 public static void exportImage(
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 OutputStream out,
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 JFreeChart chart,
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 String format,
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 int width,
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 int height
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 )
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 throws IOException
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 {
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 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
54
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 ImageIO.write(
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 chart.createBufferedImage(
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 width, height, Transparency.BITMASK, null
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 ),
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 format,
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 out
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 );
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 }
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
320
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
64
617
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
65 public static void exportHistograms(
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
66 OutputStream out,
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
67 Chart[] histograms,
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
68 String format,
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
69 int width,
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
70 int height)
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
71 throws IOException
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
72 {
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
73 log.info("export histograms");
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
74
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
75 int size = histograms.length;
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
76 BufferedImage image = new BufferedImage(
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
77 width, height*size, BufferedImage.TYPE_INT_RGB);
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
78 Graphics2D g = image.createGraphics();
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 for (int i = 0; i < size; i++) {
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
81 JFreeChart chart = histograms[i].generateChart();
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
82 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
83 }
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
84 g.finalize();
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
85
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
86 ImageIO.write(image, format, out);
3d13fa281a7e Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 323
diff changeset
87 }
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
321
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
90 public static void exportSVG(
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
91 OutputStream out,
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
92 JFreeChart chart,
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
93 String encoding,
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
94 int width,
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
95 int height
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
96 ) {
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
97 log.info("export chart as svg");
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
98
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
99 if (encoding == null)
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
100 encoding = DEFAULT_ENCODING;
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
101
323
a88e15972c72 Updated Batik library to 1.7
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 321
diff changeset
102 org.w3c.dom.Document document = XMLUtils.newDocument();
321
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
103 SVGGraphics2D graphics = new SVGGraphics2D(document);
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
104
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
105 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
106
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
107 try {
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
108 graphics.stream(new OutputStreamWriter(out, encoding));
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 catch (SVGGraphics2DIOException svge) {
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
111 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
112 }
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
113 catch (UnsupportedEncodingException uee) {
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
114 log.error("Unsupported encoding: " + encoding, uee);
a4376fd23f99 Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
115 }
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 }
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117
320
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
118
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
119 public static void exportPDF(
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
120 OutputStream out,
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
121 JFreeChart chart,
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
122 String pageFormat,
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
123 boolean landscape,
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
124 float marginLeft,
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
125 float marginRight,
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
126 float marginTop,
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
127 float marginBottom
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
128 ) {
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
129 log.info("export chart as pdf.");
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
130
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
131 if (pageFormat == null)
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
132 pageFormat = DEFAULT_PAGE_SIZE;
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 Rectangle page = PageSize.getRectangle(pageFormat);
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
135 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
136 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
137
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
138 Document document = null;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
139 if (landscape) {
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
140 document = new Document(page.rotate());
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
141 log.debug("Create landscape pdf.");
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 else
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
144 document = new Document(page);
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
145
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
146 try {
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
147 PdfWriter writer = PdfWriter.getInstance(document, out);
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
148
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
149 document.addSubject(chart.getTitle().getText());
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
150 document.addCreationDate();
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
151 document.open();
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
152
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
153 PdfContentByte content = writer.getDirectContent();
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
154
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
155 int width = 0;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
156 int height = 0;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
157 if (landscape) {
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
158 width = pageHeight;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
159 height = pageWidth;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
160 }
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
161 else {
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
162 width = pageWidth;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
163 height = pageHeight;
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
164 }
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 PdfTemplate template = content.createTemplate(width, height);
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
167 Graphics2D graphics = template.createGraphics(width, height);
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
168 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
169
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
170 chart.draw(graphics, area);
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
171 graphics.dispose();
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
172 content.addTemplate(template, marginLeft, marginBottom);
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
173 }
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
174 catch (DocumentException de) {
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
175 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
176 }
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
177 finally {
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
178 document.close();
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
179 }
318
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
180 }
5f2820e821e0 Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181 }
320
18302372703f Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 318
diff changeset
182 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org