Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 640:e5f1e868ee3e
Implementedr histogram pdf export.
gnv-artifacts/trunk@726 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 03 Mar 2010 13:44:15 +0000 |
parents | a94ed2755480 |
children | a0e63136954e |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java Tue Mar 02 14:48:32 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java Wed Mar 03 13:44:15 2010 +0000 @@ -218,5 +218,79 @@ document.close(); } } + + + public static void exportHistogramsAsPDF( + OutputStream out, + Chart[] histograms, + String pageFormat, + boolean landscape, + float marginLeft, + float marginRight, + float marginTop, + float marginBottom + ) { + log.info("export histogram 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.addCreationDate(); + document.open(); + + PdfContentByte content = writer.getDirectContent(); + + int width = 0; + int height = 0; + if (landscape) { + width = pageHeight; + height = pageWidth; + } + else { + width = pageWidth; + height = pageHeight; + } + + int size = histograms.length; + for (int i = 0; i < size; i++) { + if (i > 0) { + document.newPage(); + } + + JFreeChart chart = histograms[i].generateChart(); + 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 :