Skip to content

Instantly share code, notes, and snippets.

@erickzanardo
Created April 7, 2017 14:10
Show Gist options
  • Save erickzanardo/d33b60e8cfe5c60a80fc8d98f8770184 to your computer and use it in GitHub Desktop.
Save erickzanardo/d33b60e8cfe5c60a80fc8d98f8770184 to your computer and use it in GitHub Desktop.
PDFBox and JFreeChart example
package br.com.tagview;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import java.awt.*;
import java.awt.image.BufferedImage;
public class PdfPoc {
public static void main(String[] args) {
try {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("One", new Double(43.2));
dataset.setValue("Two", new Double(10.0));
dataset.setValue("Three", new Double(27.5));
dataset.setValue("Four", new Double(17.5));
dataset.setValue("Five", new Double(11.0));
dataset.setValue("Six", new Double(19.4));
JFreeChart chart = ChartFactory.createPieChart3D(
"Pie Chart Demo 1", // chart title
dataset, // data
true, // include legend
true,
false
);
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
plot.setNoDataMessage("No data available");
plot.setCircular(false);
plot.setLabelGap(0.02);
BufferedImage chartImage = chart.createBufferedImage(300, 200);
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream content = new PDPageContentStream(document, page);
content.beginText();
content.setFont( font, 12 );
content.newLineAtOffset(150, 750);
content.showText("Hello to pdfbox and JFreeChart world");
content.endText();
PDImageXObject pdfChartImage = JPEGFactory.createFromImage(document, chartImage, 1f);
content.drawImage(pdfChartImage, 50, 500);
content.close();
document.save("/tmp/bla-java.pdf");
document.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment