我无法从现有PDF旋转我的页面

时间:2015-12-21 11:05:39

标签: java pdf itext

我刚刚创建了一个简单的Java控制台项目,它将内容写入现有的PDF,但我无法旋转页面。我已经尝试旋转页面尝试在stackoverflow上找到的许多示例,但没有任何对我有用。

我的班级

[self dismissModalViewControllerAnimated:NO]

2 个答案:

答案 0 :(得分:3)

将页面旋转90°

首先,我理解将文档页面(包括其内容)旋转90°的问题和评论。

RotatePages.java第13章的iText示例iText in Action - Second Edition对此进行了演示。焦点代码:

PdfReader reader = new PdfReader(SOURCE);
int n = reader.getNumberOfPages();
int rot;
PdfDictionary pageDict;
for (int i = 1; i <= n; i++) {
    rot = reader.getPageRotation(i);
    pageDict = reader.getPageN(i);
    pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 90));
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
stamper.close();
reader.close();

对此,OP评论说他没有想要旋转内容,只有页面。因此:

将肖像切换为横向,反之亦然

要在横向和纵向之间切换,可以执行以下操作:

PdfReader reader = new PdfReader(SOURCE);
int n = reader.getNumberOfPages();
PdfDictionary pageDict;
for (int i = 1; i <= n; i++) {
    Rectangle rect = reader.getPageSize(i);
    Rectangle crop = reader.getCropBox(i);
    pageDict = reader.getPageN(i);
    pageDict.put(PdfName.MEDIABOX, new PdfArray(new float[] {rect.getBottom(), rect.getLeft(), rect.getTop(), rect.getRight()}));
    pageDict.put(PdfName.CROPBOX, new PdfArray(new float[] {crop.getBottom(), crop.getLeft(), crop.getTop(), crop.getRight()}));
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
stamper.close();
reader.close();

SwitchPageCanvas

这显然会削减一些内容。

答案 1 :(得分:0)

由我自己解决

我应该在打开文档之前设置旋转。

document.setPageSize(PageSize.A4.rotate());
document.open();
....
document.close();