Skip to main content
Skip table of contents

How to rotate a page while creating a PDF document?

I can set the size of the page to landscape but the content is still oriented left->right while I would like it to be bottom->top.

I want to produce a PDF with pages in landscape. While I can set the size of the page to landscape using document.setPageSize(PageSize.LETTER.rotate());, it this doesn't achieve what I want. The content is still oriented left->right while I would like it to be bottom->top.

This is what I get

This is what I want

I have been able to achieve the desired output by opening the PDF after it has been created and rotating it using iText, but I would like a solution that lets me rotate it immediately with iText after adding content to it.

Posted on StackOverflow on Jan 29, 2013 by Natan Villaescusa

Excellent question. If I was able to upvote it twice, I would!

You can achieve what you want in iText 7 with the EventHandler interface:

protected class PageRotationEventHandler implements IEventHandler {
    protected PdfNumber rotation = PORTRAIT;
    public void setRotation(PdfNumber orientation) {
        this.rotation = orientation;
    }
    @Override
    public void handleEvent(Event event) {
        PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
        docEvent.getPage().put(PdfName.Rotate, rotation);
    }
}

You should use this PageRotationEventHandler right after you've defined the writer:

PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
PageRotationEventHandler eventHandler = new PageRotationEventHandler();
pdfDoc.addEventHandler(PdfDocumentEvent.START_PAGE, eventHandler);

Note that I used SEASCAPE to get the orientation shown in your image.

The possible values for the rotation in iText7 are the following:

  • INVERTEDPORTRAIT = new PdfNumber(180);
  • LANDSCAPE = new PdfNumber(90);
  • PORTRAIT = new PdfNumber(0);
  • SEASCAPE = new PdfNumber(270);

Click How to rotate a page while creating a PDF document? if you want to see how to answer this question in iText 5.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.