/*
Copyright 2006 by Sean Luke and George Mason University
Licensed under the Academic Free License version 3.0
See the file "LICENSE" for more information
*/
package sim.util.media;
import java.awt.*;
import java.io.*;
import java.awt.geom.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import org.jfree.chart.*;
public class PDFEncoder
{
public static void generatePDF(Component component, File file )
{
int width = component.getWidth();
int height = component.getHeight();
try
{
Document document = new Document(new com.lowagie.text.Rectangle(width,height));
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
document.addAuthor("MASON");
document.open();
PdfContentByte cb = writer.getDirectContent();
PdfTemplate tp = cb.createTemplate(width, height);
Graphics g2 = tp.createGraphics(width, height, new DefaultFontMapper());
component.paint(g2);
g2.dispose();
cb.addTemplate(tp, 0, 0);
document.close();
}
catch( Exception e )
{
e.printStackTrace();
}
}
/* Generates PDF from the chart, saving out to the given file. width and height are the
desired width and height of the chart in points. */
public static void generatePDF( JFreeChart chart, int width, int height, File file )
{
try
{
Document document = new Document(new com.lowagie.text.Rectangle(width,height));
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
document.addAuthor("MASON");
document.open();
PdfContentByte cb = writer.getDirectContent();
PdfTemplate tp = cb.createTemplate(width, height);
Graphics2D g2 = tp.createGraphics(width, height, new DefaultFontMapper());
Rectangle2D rectangle2D = new Rectangle2D.Double(0, 0, width, height);
chart.draw(g2, rectangle2D);
g2.dispose();
cb.addTemplate(tp, 0, 0);
document.close();
}
catch( Exception e )
{
e.printStackTrace();
}
}
}