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

所以setRotation(90)不做任何改变,
setRotation(180)进行单个顺时针更改,
setRotation(270)进行两次转动(旋转180度)。
等等..

这是我的代码:

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度!

最佳答案

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

因此,如果您的页面已经应用了页面轮换,则使用setRotation设置相同的值将不会有任何改变。

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


所以setRotation(90)不做任何改变,
setRotation(180)进行单个顺时针更改,
setRotation(270)进行两次转动(旋转180度)。
等等..


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

关于java - iText7 setRotation()无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57329058/

10-12 07:13