我想制作一个包含横向页面的PDF。虽然可以使用以下方法将页面大小设置为横向:
document.setPageSize(PageSize.LETTER.rotate());
这没有实现我想要的,因为我添加的任何内容仍然朝向左 - >右,而我希望它是底部 - >顶部。
即。这就是我得到的:
当我想要的是:
我已经能够使用iText通过opening the PDF after it has been created and rotating it获得所需的输出,但是我想要一个解决方案,让我在添加内容后立即使用iText旋转它。
答案 0 :(得分:8)
很好的问题。如果我能够两次投票,我会的!
您可以使用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()
事件的一个很好的例子。