我使用的是prime faces 13,java 21和
com.lowgie.itext
v2.1.7(这是prime faces支持的最后一个)。
问题是,我可以将我的数据正确导入到其他格式,例如
cvs
或 xls
,但是如果能够选择将一小部分用户导出为 pdf 也可能很棒。
当我将数据导出为 pdf 文件时,下载了 pdf,但它是空的(0 字节文件),并且没有错误。
这是我的代码:
<p:commandButton value="Export">
<p:dataExporter type="pdf" target="table-id" fileName="myExportedPdf"/>
</p:commandButton>
...
<p:dataTable id="table-id" var="data" value="#{ctrl.model}" reflow="true"
multiViewState="true" draggableColumns="true" selection="#{ctrl.selection}"
rowKey="#{data.id}" disabledSelection="#{data.disableSel}" paginator="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink}" rowsPerPageTemplate="10,25,50"
rows="10" rowSelectMode="add" paginatorPosition="bottom" lazy="true"
sortBy="#{crtl.defaultSort}" stripedRows="true"
>
我已经在prime faces的官方文档以及showcase官方示例中搜索了这个。
由于我能够以其他格式导出数据,我认为这可能是 itext 依赖项的问题(它已过时),但如果我升级该依赖项,我会收到 ClassNotFound 运行时错误,因为导入路径从
com.lowgie
至 com.itext
。
可能是配置问题?或者不再可以将数据导出为 pdf?
我终于得到答案了。 PrimeFaces 在其较新版本中不使用 itext,您应该删除所有 itext 依赖项并使用
openpdf
代替:
查看 git 存储库 或从 maven 中央存储库下载 jar。
依赖性:
<!-- https://mvnrepository.com/artifact/com.github.librepdf/openpdf -->
<dependency>
<groupId>com.github.librepdf</groupId>
<artifactId>openpdf</artifactId>
<version>1.3.40</version>
</dependency>
我从 showcase git 存储库获取此依赖项。如果您需要将数据导出为 MS 文件,您可以使用
poi
来完成,请参阅官方 pom 文件以获取完整的依赖项列表。