You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iText 7.1调用Document.add(Paragraph)报错,原7.0代码正常

解决iText 7.1.0中document.add()抛出异常的问题

从你提供的代码来看,在iText 7.0版本正常运行的PDF生成逻辑,升级到7.1.0后在执行document.add(new Paragraph("Some content"))时触发异常,大概率和许可证加载时机或者7.1.x版本的API权限校验变更有关,下面是针对性的排查和解决思路:

1. 调整许可证加载的时机

iText 7.1.x版本对许可证加载的时机要求更严格,必须在创建任何iText核心对象(比如PdfWriterPdfDocument)之前加载许可证。你的代码里先创建了PdfWriterPdfDocument,之后才加载许可证,这在7.1.x版本中会触发权限相关的异常。

修改后的正确代码结构应该是:

try {
    // 优先加载许可证,再初始化任何iText相关对象
    LicenseKey.loadLicenseFile(".../key.xml");
    
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    PdfWriter writer = new PdfWriter(out);
    PdfDocument pdfDocument = new PdfDocument(writer);
    
    Document document = new Document(pdfDocument);
    document.add(new Paragraph("Some content"));
    //---更多代码----
} catch (Exception e) {
    // 添加异常处理逻辑
    e.printStackTrace();
}

2. 检查许可证文件的有效性

7.1.x版本对许可证的验证逻辑更严谨,你可以从这几个维度确认:

  • 许可证是否适配iText 7.1.x版本(部分旧版本许可证可能不兼容新版本)
  • 许可证文件的路径是否正确,程序运行时能正常读取到该文件
  • 许可证是否处于有效期内,且包含PDF内容编辑的权限

3. 确认依赖包的版本一致性

升级到7.1.0时,要确保所有iText相关的依赖包都同步升级到对应版本,避免因版本不一致导致的兼容性问题。比如使用Maven/Gradle时,itext-coreitext-layout等核心依赖的版本要统一为7.1.0。


内容的提问来源于stack exchange,提问作者Bgvv1983

火山引擎 最新活动