iText - 旋转没有旋转属性的页面

时间:2015-07-03 08:31:41

标签: java pdf itext

我有一个现有的PDF,我想将所有页面复制到一个新的PDF文件。但是,我想将页面旋转90度,但不想使用Page-Rotation-Property。我对itext并不熟悉,也没有在Google找到解决方案。

1 个答案:

答案 0 :(得分:1)

我用这段代码解决了这个问题。感谢mkl!

    PdfReader pdfIn = new PdfReader("source.pdf");
    Document document = new Document(getNormalizedPageSize(pdfIn), 0, 0, 0, 0);
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("d:/target.pdf"));
    document.open();
    PdfContentByte cb = writer.getDirectContent();

    for (int i = 1; i <= pdfIn.getNumberOfPages(); i++) {
        PdfImportedPage page = writer.getImportedPage(pdfIn, i);
        document.setPageSize(new Rectangle(page.getHeight(), page.getWidth()));
        document.newPage();
        float min = Math.min(page.getHeight(), page.getWidth());
        AffineTransform rotateInstance = AffineTransform.getRotateInstance(Math.PI / 2,
                min / 2.0, min / 2.0);
        double[] matrix = new double[6];
        rotateInstance.getMatrix(matrix);
        cb.addTemplate(page, (float) matrix[0], (float) matrix[1], (float) matrix[2],
                (float) matrix[3], (float) matrix[4], (float) matrix[5]);
    }
    document.close();