Changing the orientation of PDF using Itext

11,981

When you create a Document object like this:

Document document = new Document();

You tell iText to create a document with pages of the A4 format using Portrait orientation. You can add a Rectangle object as a parameter of the Document constructor to create documents with pages in any size you want.

You can also use the PageSize class to use a predefined format. For instance: if you want to use an A4 page in landscape, you'd use this:

Document document = new Document(PageSize.A4.rotate());

Please download the free eBook "The ABC of PDF" for more info.

Share:
11,981
Vikram
Author by

Vikram

Updated on June 04, 2022

Comments

  • Vikram
    Vikram almost 2 years

    I have done creating pdf and chart with the help of this link http://viralpatel.net/blogs/generate-pie-chart-bar-graph-in-pdf-using-itext-jfreechart/.

    package net.viralpatel.pdf;
    
    import java.awt.Graphics2D;
    import java.awt.geom.Rectangle2D;
    import java.io.FileOutputStream;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.data.general.DefaultPieDataset;
    
    import com.itextpdf.text.Document;
    import com.itextpdf.text.pdf.DefaultFontMapper;
    import com.itextpdf.text.pdf.PdfContentByte;
    import com.itextpdf.text.pdf.PdfTemplate;
    import com.itextpdf.text.pdf.PdfWriter;
    
    public class PieChartDemo {    
    public static void main(String[] args) {
         //TODO: Add code to generate PDFs with charts
        writeChartToPDF(generateBarChart(), 500, 400, "C://barchart.pdf");
        writeChartToPDF(generatePieChart(), 500, 400, "C://piechart.pdf");
    }
    
    public static void writeChartToPDF(JFreeChart chart, int width, int height, String fileName) {
        PdfWriter writer = null;
    
        Document document = new Document();
    
        try {
            writer = PdfWriter.getInstance(document, new FileOutputStream(
                    fileName));
            document.open();
            PdfContentByte contentByte = writer.getDirectContent();
            PdfTemplate template = contentByte.createTemplate(width, height);
            Graphics2D graphics2d = template.createGraphics(width, height,
                    new DefaultFontMapper());
            Rectangle2D rectangle2d = new Rectangle2D.Double(0, 0, width,
                    height);
    
            chart.draw(graphics2d, rectangle2d);
    
            graphics2d.dispose();
            contentByte.addTemplate(template, 0, 0);
    
        } catch (Exception e) {
            e.printStackTrace();
        }
        document.close();
    }
    
    public static JFreeChart generatePieChart() {
        DefaultPieDataset dataSet = new DefaultPieDataset();
        dataSet.setValue("China", 19.64);
        dataSet.setValue("India", 17.3);
        dataSet.setValue("United States", 4.54);
        dataSet.setValue("Indonesia", 3.4);
        dataSet.setValue("Brazil", 2.83);
        dataSet.setValue("Pakistan", 2.48);
        dataSet.setValue("Bangladesh", 2.38);
    
        JFreeChart chart = ChartFactory.createPieChart(
                "World Population by countries", dataSet, true, true, false);
    
        return chart;
    }
    
    public static JFreeChart generateBarChart() {
        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
        dataSet.setValue(791, "Population", "1750 AD");
        dataSet.setValue(978, "Population", "1800 AD");
        dataSet.setValue(1262, "Population", "1850 AD");
        dataSet.setValue(1650, "Population", "1900 AD");
        dataSet.setValue(2519, "Population", "1950 AD");
        dataSet.setValue(6070, "Population", "2000 AD");
    
        JFreeChart chart = ChartFactory.createBarChart(
                "World Population growth", "Year", "Population in millions",
                dataSet, PlotOrientation.VERTICAL, false, true, false);
    
        return chart;
    }
    

    }

    Now how to change the orientation of the pdf from prtrait to landscape?

  • Vikram
    Vikram about 10 years
    after importing import com.itextpdf.text.PageSize package pdf is not creating..what to do ?
  • Bruno Lowagie
    Bruno Lowagie about 10 years
    Your comment doesn't contain a question a developer would ask: lowagie.com/doesntwork Learn how to walk before trying to run. Start with a simple Hello World example: itextpdf.com/examples/iia.php?id=20