在现有PDF文档中页面旋转为空时该怎么办?

时间:2015-12-17 12:22:42

标签: java pdf itext

您好我需要将pdf从水平视图旋转到垂直视图。我使用iText模板将页面旋转90度。这是代码片段:

PdfReader reader = new PdfReader(pdfContent);
        decryptReader(reader);
        int n = reader.getNumberOfPages();
        PdfImportedPage page;
        for (int i = 1; i <= n; i++) {
            PdfDictionary pageDict = reader.getPageN(i);
            PdfNumber pageRotation = pageDict.getAsNumber(PdfName.ROTATE); //this part always gets me null so it doesn't pass the if requirement.
            page = writer.getImportedPage(reader, i);
            Image image = Image.getInstance(page);
            if(pageRotation != null) {

decryptReader函数:

 private void decryptReader(PdfReader reader) {
    try{
       Field f = reader.getClass().getDeclaredField("encrypted");
       f.setAccessible(true);
       f.set(reader, false);
    }catch(Exception e){
       LOG.error("Error descrypting pdf document", e);
    }
}

如何在pageRotation中修复null?

1 个答案:

答案 0 :(得分:1)

这来自iText Example for rotating PDF:(适合您的变量名称)

PdfNumber pageRotation = pageDict.getAsNumber(PdfName.ROTATE);
if (pageRotation == null) {
    pageDict.put(PdfName.ROTATE, new PdfNumber(90));
}
else {
    pageDict.put(PdfName.ROTATE, new PdfNumber((pageRotation .intValue() + 90) % 360));
}

正如你所看到的那样,完全可以通过该调用获得null ,这仅仅是因为该页面上尚未生效旋转(尚未)。如果一个旋转,你就会收到这个旋转,并且只需要加90°。