PDFBox将现有PDF的所有内容旋转90度

时间:2018-04-05 15:31:24

标签: java pdfbox

正如标题所述,我正在尝试将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();
    }

2 个答案:

答案 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度。