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

2022-09-04 22:34:57

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

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

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

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

landscape with content left->right

当我想要的是:

landscape with content bottom->top

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


答案 1

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

你可以实现你想要的 :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());

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

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


答案 2

推荐