Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 349:555483213f78
Added buffer creator in index (i, j) space.
gnv-artifacts/trunk@419 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 14 Dec 2009 14:36:43 +0000 |
parents | a88e15972c72 |
children | 3d13fa281a7e |
line wrap: on
line source
package de.intevation.gnv.exports; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.PageSize; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfTemplate; import com.lowagie.text.pdf.PdfWriter; import java.awt.Transparency; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D.Double; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.imageio.ImageIO; import org.apache.batik.svggen.SVGGraphics2D; import org.apache.batik.svggen.SVGGraphics2DIOException; import org.apache.log4j.Logger; import org.jfree.chart.JFreeChart; import de.intevation.artifactdatabase.XMLUtils; /** * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> */ public class ChartExportHelper { private static final String DEFAULT_PAGE_SIZE = "A4"; private static final String DEFAULT_ENCODING = "UTF-8"; private static Logger log = Logger.getLogger(ChartExportHelper.class); public static void exportImage( OutputStream out, JFreeChart chart, String format, int width, int height ) throws IOException { log.info("export chart as png"); ImageIO.write( chart.createBufferedImage( width, height, Transparency.BITMASK, null ), format, out ); } public static void exportSVG( OutputStream out, JFreeChart chart, String encoding, int width, int height ) { log.info("export chart as svg"); if (encoding == null) encoding = DEFAULT_ENCODING; org.w3c.dom.Document document = XMLUtils.newDocument(); SVGGraphics2D graphics = new SVGGraphics2D(document); chart.draw(graphics, new Rectangle2D.Double(0.0D, 0.0D,width,height)); try { graphics.stream(new OutputStreamWriter(out, encoding)); } catch (SVGGraphics2DIOException svge) { log.error("Error while writing svg export to output stream.", svge); } catch (UnsupportedEncodingException uee) { log.error("Unsupported encoding: " + encoding, uee); } } public static void exportPDF( OutputStream out, JFreeChart chart, String pageFormat, boolean landscape, float marginLeft, float marginRight, float marginTop, float marginBottom ) { log.info("export chart as pdf."); if (pageFormat == null) pageFormat = DEFAULT_PAGE_SIZE; Rectangle page = PageSize.getRectangle(pageFormat); int pageWidth = (int) (page.getRight(marginRight) - page.getLeft(marginLeft)); int pageHeight = (int) (page.getTop(marginTop) - page.getBottom(marginBottom)); Document document = null; if (landscape) { document = new Document(page.rotate()); log.debug("Create landscape pdf."); } else document = new Document(page); try { PdfWriter writer = PdfWriter.getInstance(document, out); document.addSubject(chart.getTitle().getText()); document.addCreationDate(); document.open(); PdfContentByte content = writer.getDirectContent(); int width = 0; int height = 0; if (landscape) { width = pageHeight; height = pageWidth; } else { width = pageWidth; height = pageHeight; } PdfTemplate template = content.createTemplate(width, height); Graphics2D graphics = template.createGraphics(width, height); Rectangle2D area = new Rectangle2D.Double(0.0D, 0.0D,width,height); chart.draw(graphics, area); graphics.dispose(); content.addTemplate(template, marginLeft, marginBottom); } catch (DocumentException de) { log.error("Error while exporting chart to pdf.", de); } finally { document.close(); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :