13

我想制作一个包含横向页面的 PDF。虽然可以使用以下方法将页面大小设置为横向:

document.setPageSize(PageSize.LETTER.rotate());

这并没有达到我想要的效果,因为我添加的任何内容仍然是向左->向右,而我希望它是底部->顶部。

IE 这就是我得到的:

具有左->右内容的横向

当我想要的是:

内容底部->顶部的横向

我已经能够通过在创建 PDF 后打开它并使用 iText 旋转它来实现所需的输出,但我想要一个解决方案,让我在向其中添加内容后立即使用 iText 旋转它。

4

1 回答 1

8

很好的问题。如果我能够投票两次,我会的!

您可以通过以下方式实现您想要的PdfPageEvent

public class RotateEvent extends PdfPageEventHelper {
    public void onStartPage(PdfWriter writer, Document document) {
        writer.addPageDictEntry(PdfName.ROTATE, PdfPage.SEASCAPE);
    }
}

您应该RotateEvent在定义编写器后立即使用它:

    PdfWriter writer = PdfWriter.getInstance(document, os);
    writer.setPageEvent(new RotateEvent());

请注意,我曾经SEASCAPE获得图像中显示的方向。LANDSCAPE如果您希望页面朝向另一个方向,您也可以使用。

一旦我开始写第三版“iText in Action”,我就需要记住这个问题。这是何时使用onStartPage()事件的一个很好的例子。

于 2013-01-30T09:22:00.517 回答