package org.docbag.client; import java.awt.*; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.xmlgraphics.util.MimeConstants; import org.docbag.*; import org.docbag.chart.jfree.*; import org.docbag.table.Cell; import org.docbag.table.Row; import org.docbag.table.Table; import org.docbag.template.DocumentTemplateStream; import org.docbag.template.repo.ClasspathDocumentTemplateRepository; import org.docbag.template.repo.DefaultDocumentTemplateRepository; import org.docbag.template.repo.DocumentTemplateRepository; import org.docbag.template.repo.FileDocumentTemplateRepository; import org.docbag.template.transformer.xslt.DefaultXSLTTemplateTransformer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; /** * DocBagClient */ public class DocBagClient { private static final String FOP_CONFIG = "src/test/resources/config/fop.xml"; public void createDocument() throws Exception { DocumentCreator<DocumentStream, DocumentTemplateStream> creator = DocBag.newDocumentCreator( MimeConstants.MIME_PDF, new DefaultXSLTTemplateTransformer(), new ClasspathDocumentTemplateRepository(), new DocBagConfig.Builder().withConfig(System.getProperty("user.dir") + "/" + FOP_CONFIG).build()); DocumentStream document = creator.createDocument("templates/test-chart.html", getContext()); saveToFile(document); } public static final void main(String[] args) throws Exception { new DocBagClient().createDocument(); } private void saveToFile(DocumentStream document) throws Exception { FileOutputStream file = new FileOutputStream("C:\\out.pdf"); int read = 0; byte[] bytes = new byte[1024]; while ((read = document.getStream().read(bytes)) != -1) { file.write(bytes, 0, read); } file.flush(); file.close(); } private Context getContext() { Context documentContext = new DefaultContext(); Map<Comparable<String>, Double> exploded = new HashMap<Comparable<String>, Double>(); exploded.put("A", 0.3); float dash[] = {5.0f}; Map<String, Style> styles = new HashMap<String, Style>(); styles.put("A", new Style(new Color(255, 127, 0))); styles.put("B", new Style(new Color(114, 56, 0))); styles.put("C", new Style(new Color(255, 255, 255))); Map<String, Style> styles2 = new HashMap<String, Style>(); styles2.put("A", new Style(new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f))); // documentContext.put("chart1", new PieChart.Builder(createPieDataSet()).exploded(exploded).title("Pie Chart").styles(styles).build()); documentContext.put("chart1", new StackedBarChart.Builder(createStackedDataSet()).title("Stacked Chart").styles(styles).build()); documentContext.put("chart2", new BarChart.Builder(getBarData()).title("Bar Chart").styles(styles).build()); documentContext.put("chart3", new LineChart.Builder(getBarData()).title("Line Chart").styles(styles).build()); documentContext.put("chart4", new AreaChart.Builder(getBarData()).title("Area Chart").styles(styles).build()); documentContext.put("name", "Friend"); documentContext.put("table1", createTable()); documentContext.put("special", "ąęćłńóśżź"); return documentContext; } private CategoryDataset createStackedDataSet() { DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset(); //Enrollment in Bachelors level categoryDataset.setValue(2003, "A", "2005"); categoryDataset.setValue(1350, "A", "2006"); categoryDataset.setValue(2408, "A", "2007"); categoryDataset.setValue(2607, "A", "2008"); //Enrollment in Masters level categoryDataset.setValue(985, "B", "2005"); categoryDataset.setValue(1400, "B", "2006"); categoryDataset.setValue(1634, "B", "2007"); categoryDataset.setValue(978, "B", "2008"); //Enrollment in PhD level categoryDataset.setValue(356, "C", "2005"); categoryDataset.setValue(390, "C", "2006"); categoryDataset.setValue(350, "C", "2007"); categoryDataset.setValue(687, "C", "2008"); return categoryDataset; } private DefaultCategoryDataset getBarData() { DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset(); //Enrollment in Bachelors level categoryDataset.setValue(2003, "A", "2005"); categoryDataset.setValue(1350, "A", "2006"); categoryDataset.setValue(2408, "A", "2007"); categoryDataset.setValue(2607, "A", "2008"); //Enrollment in Masters level categoryDataset.setValue(985, "B", "2005"); categoryDataset.setValue(1400, "B", "2006"); categoryDataset.setValue(1634, "B", "2007"); categoryDataset.setValue(978, "B", "2008"); //Enrollment in PhD level categoryDataset.setValue(356, "C", "2005"); categoryDataset.setValue(390, "C", "2006"); categoryDataset.setValue(350, "C", "2007"); categoryDataset.setValue(687, "C", "2008"); return categoryDataset; } private static PieDataset createPieDataSet() { DefaultPieDataset result = new DefaultPieDataset(); result.setValue("A", 30); result.setValue("B", 30); result.setValue("C", 40); return result; } private Table createTable() { java.util.List<Row> headRows = new ArrayList<Row>(); java.util.List<Cell> headCells = new ArrayList<Cell>(); headCells.add(new Cell("head cell 1")); headCells.add(new Cell("head cell 2")); headCells.add(new Cell("head cell 3")); headRows.add(new Row(headCells)); java.util.List<Row> bodyRows = new ArrayList<Row>(); for (int i = 0; i < 100; i++) { java.util.List<Cell> bodyCells = new ArrayList<Cell>(); bodyCells.add(new Cell("body cell 1" + i)); bodyCells.add(new Cell("body cell 2" + i)); bodyCells.add(new Cell("body cell 3" + i)); bodyRows.add(new Row(bodyCells)); } java.util.List<Row> footRows = new ArrayList<Row>(); java.util.List<Cell> footCells = new ArrayList<Cell>(); footCells.add(new Cell("Footer")); footRows.add(new Row(footCells)); return new Table("table1", headRows, bodyRows, footRows, false); } private Table createTable2() { List<Row> bodyRows = new ArrayList<Row>(); for (int i = 0; i < 100; i++) { java.util.List<Cell> bodyCells = new ArrayList<Cell>(); bodyCells.add(new Cell("body cell 1" + i)); bodyCells.add(new Cell("body cell 2" + i)); bodyCells.add(new Cell("body cell 3" + i)); bodyRows.add(new Row(bodyCells)); } return new Table("table1", bodyRows); } }