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

标签 java pdf itext

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

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

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

即这就是我得到的:

landscape with content left->right

当我想要的是:

landscape with content bottom->top

我已经能够通过 opening the PDF after it has been created and rotating it 获得所需的输出使用 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 来获取图像中显示的方向。如果您希望页面朝向另一个方向,您也可以使用 LANDSCAPE

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

关于java - iText - 创建 PDF 时旋转页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14591689/

相关文章:

java - 多个 else if 条件,当逻辑规定最后一个 "else if"时,以另一个 "else"或 "else"结束 - 部分仅规定一种可能性?

php - 使用 PHP 创建 PDF 文件

java - 使用 iText 删除指定区域中出现的文本

java - 使用 ITextRenderer pdf 中没有中文单词

java - 如何对java代码进行单元测试

java - 如何去掉字符串中的多个空格并保留一个

java - 链表的浅拷贝不反射(reflect)添加新节点时的变化

silverlight - 在 Silverlight 中显示 PDF

c# - PdfArray.remove() 没有删除所有注释

java - 通过 Java 批处理 : iText or Apache FOP? 简单生成 PDF