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

如何在Java iTextPDF中设置每页显示的数据量?

iTextPDF动态分页导出问题

我使用Java的iTextPDF库开发了一套PDF导出系统,目前遇到分页数据拆分的问题。我希望通过输入值动态设置每页显示的数据量,尝试了如下代码,但输出结果不符合预期:

// 循环遍历数据行
PdfPTable itemTable = new PdfPTable(headerColumns.length);
itemTable.setWidthPercentage(100);
for(int i = 0;i< data.size();i++){

    // 区域列
    PdfPCell area = new PdfPCell(new Phrase(data.get(i).get("area").toString()));
    area.setPaddingLeft(4);
    area.setVerticalAlignment(Element.ALIGN_MIDDLE);
    area.setHorizontalAlignment(Element.ALIGN_CENTER);
    itemTable.addCell(area);

    // new_sa列
    PdfPCell newSa = new PdfPCell(new Phrase(data.get(i).get("new_sa").toString()));
    newSa.setPaddingLeft(4);
    newSa.setVerticalAlignment(Element.ALIGN_MIDDLE);
    newSa.setHorizontalAlignment(Element.ALIGN_CENTER);
    itemTable.addCell(newSa);

    // sa_mtd列
    PdfPCell saMtd = new PdfPCell(new Phrase(data.get(i).get("sa_mtd").toString()));
    saMtd.setPaddingLeft(4);
    saMtd.setVerticalAlignment(Element.ALIGN_MIDDLE);
    saMtd.setHorizontalAlignment(Element.ALIGN_CENTER);
    itemTable.addCell(saMtd);

    // sa_last_month列
    PdfPCell saLastMonth = new PdfPCell(new Phrase(data.get(i).get("sa_last_month").toString()));
    saLastMonth.setPaddingLeft(4);
    saLastMonth.setVerticalAlignment(Element.ALIGN_MIDDLE);
    saLastMonth.setHorizontalAlignment(Element.ALIGN_CENTER);
    itemTable.addCell(saMtd);

    // 设置每页最多显示2条数据
    if(itemTable.getRows().size() == 2){
        document.newPage();
    }
    document.add(table);
    document.add(itemTable);
}
document.close();

导出的PDF分页结果不符合预期,数据显示存在异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:30:46