无法旋转PDF iText页面

时间:2016-09-06 16:48:29

标签: java pdf itext

我想旋转多个PDF页面以获得SEASCAPE或LANDSCAPE肖像,但我无法弄清楚我缺少什么。这是我的代码

public void createSizedPdf(String dest) throws IOException, DocumentException {
    Rectangle one = new Rectangle(290,120);
    one.setBackgroundColor(BaseColor.YELLOW);

    Document document = new Document(one,5,5,5,5);
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));

    Rotate event = new Rotate();
    event.setOrientation(PdfPage.SEASCAPE);
    writer.setPageEvent(event);
for (int i = 0; i < 5; i++) {

    // add some paragraphs and imgs here

    if(i != 0){
        event.setOrientation(PdfPage.SEASCAPE);
        document.newPage();             
    }           
    document.add(img);
   }        
    document.close();
}

public class Rotate extends PdfPageEventHelper {

     protected PdfNumber orientation = PdfPage.PORTRAIT;

    public void setOrientation(PdfNumber orientation) {
        this.orientation = orientation;
    }

    @Override
    public void onStartPage(PdfWriter writer, Document document) {
        writer.addPageDictEntry(PdfName.ROTATE, orientation);
    }
}

提前致谢。

2 个答案:

答案 0 :(得分:1)

您忘记打开文档了。设置事件后,您需要添加以下行:

document.open();

因为您忘记了这一行,所以您会收到一个异常,通知您在添加图片时文档未打开。

下次发帖时请详细说明。例如:共享运行代码时引发的异常。当我第一次阅读你的代码时,我想:这段代码完全取自官方文档,为什么它不起作用?

我认为页面旋转有问题但是在第三次看完你的问题后,我意识到你没有告诉我们出了什么问题,所以我再看看你的代码,然后我看到了罪魁祸首:发布open()声明。如果您共享了抛出的异常,我会立即看到它。

答案 1 :(得分:0)

试试这个

Document document = new Document(PageSize.A4_LANDSCAPE.rotate(),5,5,5,5);