Itext pdf问题与pdf文件轮换

时间:2015-02-18 10:43:39

标签: pdf rotation itext

我正在使用ItextPdf PdfSmartCopy和PdfDictionary。我要检测输入pdf文件的旋转,根据旋转我要决定我应该旋转多少才能使其达到零度(普通视图)。通常,如果用户扫描文件,在保存之前向左或向右旋转文件,我的程序必须在用户上传时检测到它。我使用下面的代码但是对于所有不同类型的文件,旋转仅为零。知道如何解决它吗?

com.itextpdf.text.pdf.PdfReader existing = new com.itextpdf.text.pdf.PdfReader("c:\\pdf_issue\\rotate270.pdf");
        com.itextpdf.text.Document document1 = new com.itextpdf.text.Document();
        com.itextpdf.text.pdf.PdfCopy copy = new PdfSmartCopy(document1, new FileOutputStream("c:\\pdf_issue\\TestRotation270.pdf"));
        document1.open();
    int n1 = existing.getNumberOfPages();
        PdfDictionary pageDict;
        int rot;
        for (int i = 1; i <= n1; i++) {
            rot = existing.getPageRotation(i);

            switch(rot)
            {
            case 90:
               {
                pageDict = existing.getPageN(i);
                pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 270));
                 break;
               }
            case 180:
               {
                pageDict = existing.getPageN(i);
                pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 180));
                 break;            
}
            case 270:
               {
                pageDict = existing.getPageN(i);
                pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 90));
               break;
}
            default:
               {
                pageDict = existing.getPageN(i);
                pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 0));
               break;
}
            }

        }
        for (int page = 0; page < n1; ) {
            copy.addPage(copy.getImportedPage(existing, ++page));
        }
    document1.close();

但是如果我在没有检测到旋转的情况下明确地旋转文件,那么无论标准程度如何,文件都会旋转。

0 个答案:

没有答案