Java iText-创建PDF时旋转页面内容

Java iText-创建PDF时旋转页面内容,java,pdf,itext,Java,Pdf,Itext,我想制作一个PDF,在景观页面。虽然可以使用以下方法将页面大小设置为横向: document.setPageSize(PageSize.LETTER.rotate()); 这并没有达到我想要的效果,因为我添加的任何内容仍然是左->右,而我希望它是底部->顶部 也就是说,这就是我得到的: 对“> 当我想要的是: 顶部“> 我已经能够通过使用iText实现所需的输出,但我希望有一个解决方案,可以让我在向iText添加内容后立即使用iText进行旋转。好问题。如果我能投两次,我会的 您可以通过Pdf

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

document.setPageSize(PageSize.LETTER.rotate());
这并没有达到我想要的效果,因为我添加的任何内容仍然是左->右,而我希望它是底部->顶部

也就是说,这就是我得到的:

对“>

当我想要的是:

顶部“>


我已经能够通过使用iText实现所需的输出,但我希望有一个解决方案,可以让我在向iText添加内容后立即使用iText进行旋转。

好问题。如果我能投两次,我会的

您可以通过
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
来获得图像中显示的方向。如果希望页面朝向另一个方向,也可以使用
横向


一旦我开始写第三版的《iText在行动》时,我需要记住这个问题。这是一个很好的例子,说明何时使用
onStartPage()
事件。

有效!我发现我不需要创建RotateEvent,我只使用了
writer.addPageDictEntry(PdfName.ROTATE,PdfPage.SEASCAPE)
在创建PdfWriter之后,因为我总是创建一个页面。你是对的,这也很有效,但是每次“使用”页面字典的额外条目时,它就消失了。在您的情况下,这并不重要,因为您只创建了一个页面!