【问题标题】:iText - Rotate page content while creating PDFiText - 创建 PDF 时旋转页面内容
【发布时间】:2013-01-13 13:00:22
【问题描述】:

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

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

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

I.E.这就是我得到的:

当我想要的是:

我已经能够通过opening the PDF after it has been created and rotating it 使用 iText 实现所需的输出,但我想要一个解决方案,让我在向其添加内容后立即使用 iText 旋转它。

【问题讨论】:

    标签: java pdf 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());
    

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

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

    【讨论】:

    • 成功了!我发现我不需要创建 RotateEvent,我只是在创建 PdfWriter 后立即使用writer.addPageDictEntry(PdfName.ROTATE, PdfPage.SEASCAPE);,因为我总是创建一个页面。
    • 你是对的,这也有效,但是每次“使用”页面字典的额外条目时,它就消失了。在您的情况下,这并不重要,因为您只创建一个页面!
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2019-10-30
    相关资源
    最近更新 更多