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

标签 java pdf itext

您好,我需要将 pdf 从水平 View 旋转为垂直 View 。我使用 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?

最佳答案

这是来自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°。

关于java - 当现有 PDF 文档中页面旋转为空时该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334494/

相关文章:

c# - iTextSharp 解析 PDF 对象以删除未使用的对象

java - 我的递归快速排序中的小错误

java - 如何使用 iText 解析未标记的 pdf 文件

java - 使用 SLF4J 设置动态控制台日志记录级别

java - Wicket:创建指向 PDF 文件的链接

java - 使用 PDFBox 加水印

c# - 如何只生成一个 PDF

java - iText - 如何将条形码添加到文档(com.itextpdf.text.Document)?

java - 带有@query的Spring规范

java - 错误:package doesn't exist while compiling java code