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 :

http://dive4elements.wald.intevation.org