首页 > 解决方案 > iText7 setRotation()无法正常工作

问题描述

我正在制作一个可以修改现有 PDF 的小型 Java 程序,并使用 iTextPDF 7 将更改保存在新 PDF 中。我从使用setRotation()on a的旋转功能开始PdfDocument,但我的 PDF 输出旋转 90 度小于我作为参数输入的值。

所以setRotation(90)不做任何改变,
setRotation(180)做一个顺时针改变,
setRotation(270)做一个双转(180度旋转)。
ETC..

这是我的代码:

import java.io.IOException;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;

public class rotateMyPDF {

    public static void main(String[] args) throws IOException  {

        PdfReader in_pdf = new PdfReader("in.pdf");
        PdfDocument pdfDoc = new PdfDocument(in_pdf, new PdfWriter("out.pdf"));

        for (int i=1; i<=pdfDoc.getNumberOfPages(); i++) {
            pdfDoc.getPage(i).setRotation(270);  //error here?

        }
        pdfDoc.close();
        System.out.println("done.");
    }
}

看起来像一个错误?还是我的代码有错误?或者这是预期的功能?
如果我输入setRotation(0),PDF 页面会逆时针旋转 90 度!

标签: javapdfitextitext7

解决方案


您似乎误解了该setRotation方法。它不会添加到当前旋转,但会设置旋转值。

因此,如果您的页面已经应用了页面旋转,则设置相同的值setRotation不会改变任何内容等。

您的源页面似乎已经旋转了 90°。这可以解释观察结果:

所以setRotation(90)不做任何改变, setRotation(180)做一个顺时针改变, setRotation(270)做一个双转(180度旋转)。ETC..

只需首先使用 读取当前旋转值getRotation,添加所需的额外旋转,然后使用 设置该总和setRotation


推荐阅读