我刚刚创建了一个简单的Java控制台项目,它将内容写入现有的PDF,但我无法旋转页面。我已经尝试旋转页面尝试在stackoverflow上找到的许多示例,但没有任何对我有用。
我的班级
[self dismissModalViewControllerAnimated:NO]
答案 0 :(得分:3)
首先,我理解将文档页面(包括其内容)旋转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();
这显然会削减一些内容。
答案 1 :(得分:0)
由我自己解决。
我应该在打开文档之前设置旋转。
document.setPageSize(PageSize.A4.rotate());
document.open();
....
document.close();