You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrimeFaces Jakarta 14.0.4 dataExporter无法导出PDF,应使用哪个PDF JAR包?

PrimeFaces PDF导出依赖包问题

问题描述

使用以下代码实现PDF导出:

<h:commandLink>
    <p:graphicImage value="#{resource['images:exportIcons/pdfExport.png']}" width="40"/>
    <p:dataExporter type="pdf" target="datalist" fileName="Companies"/>
</h:commandLink>

运行时触发错误:jakarta.servlet.ServletException: com/lowagie/text/Phrase,尝试过openpdf-1.3.30.jar和itextpdf-5.5.13.4.jar均无法解决。

解决方案

问题核心是PrimeFaces版本与PDF依赖库的版本不兼容,需根据你的PrimeFaces版本选择对应库:

1. PrimeFaces 10及以上(Jakarta EE环境)

需使用兼容Jakarta的OpenPDF 2.x版本,旧版OpenPDF(如1.3.30)基于javax API,无法适配Jakarta环境。推荐使用:

  • openpdf-core + openpdf-fonts,版本建议2.0.2或更高。
    Maven依赖示例:
<dependency>
    <groupId>com.github.librepdf</groupId>
    <artifactId>openpdf-core</artifactId>
    <version>2.0.2</version>
</dependency>
<dependency>
    <groupId>com.github.librepdf</groupId>
    <artifactId>openpdf-fonts</artifactId>
    <version>2.0.2</version>
</dependency>

2. PrimeFaces 9及以下(Java EE环境)

需依赖com.lowagie.text包的PDF库,不能用iText 5.x(包名已改为com.itextpdf.text),可选:

  • iText 2.1.7(原始lowagie分支版本)
  • OpenPDF 1.x(基于iText 2.x的开源分支,如1.3.29等稳定版本)

错误原因说明

  • 用itextpdf-5.5.13.4.jar时,包名已从com.lowagie.text改为com.itextpdf.text,PrimeFaces旧版dataExporter仍在调用旧包名的类,导致找不到。
  • 用openpdf-1.3.30.jar时,若你用的是Jakarta版PrimeFaces,该库是javax API实现,无法兼容Jakarta的类路径,导致类加载失败。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:33:19