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

Nat*_*usa 12 java pdf itext

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

document.setPageSize(PageSize.LETTER.rotate());
Run Code Online (Sandbox Code Playgroud)

这没有实现我想要的,因为我添加的任何内容仍然是左 - >右,而我希望它是底部 - >顶部.

IE这是我得到的:

内容为left-> right的景观

当我想要的是:

内容底部的景观 - >顶部

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

Bru*_*gie 8

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

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

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

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

    PdfWriter writer = PdfWriter.getInstance(document, os);
    writer.setPageEvent(new RotateEvent());
Run Code Online (Sandbox Code Playgroud)

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

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