正如标题所述,我正在尝试将pdf页面从横向旋转到纵向,反之亦然,同时保留所有现有格式。
我在堆栈溢出和外部尝试了很多方法/指南,包括阅读现有文档。不幸的是,答案仍然没有找到我。
很容易说出设置PDF页面的旋转例如(page.setRotation(90))。 或者通过矩阵和内容流设置轮播。但似乎没有一个按要求工作。
Iterator<PDDocument> iterator = pages.listIterator();
PDDocument temp = null;
while (iterator.hasNext()) {
temp = iterator.next();
-(..Code goes Here..)-
/** Set Page rotation test 1**/
PDPage page = temp.getDocumentCatalog().getPages().get(0);
page.setRotation(90);
/** Set Page rotation test 2**/
PDPage page = temp.getDocumentCatalog().getPages().get(0);
PDPageContentStream cs = new PDPageContentStream(temp, page, PDPageContentStream.AppendMode.PREPEND, false, false);
Matrix matrix = Matrix.getRotateInstance(Math.toRadians(90), 0, 0);
cs.transform(matrix);
cs.close();
-(.. Other tests etc ..)-
String filePath = "....filePath"
temp.save(filePath);
temp.close();
}
答案 0 :(得分:3)
“第一检查”页面是否旋转。然后旋转页面。
PDRectangle pageSize = page.getMediaBox();
if ((pageSize.getWidth() <= pageSize.getHeight()) && (page.getRotation() == 90 || page.getRotation() == 270)) {
page.setRotation(0); //Rotate Landscape
} else
page.setRotation(90); //Rotate Portrait
}
答案 1 :(得分:0)
问题中的例子是答案,我犯的错误不是检查项目的每个阶段。对于任何坚持这个问题的人来说,这个例子会将pdf旋转90度。