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
相关产品推荐
相关产品推荐

