java - iText 7(Java)当大表扩展到下一页时,它不绘制底部边框
问题描述
在我的带有 iText 7 的报告生成 java 应用程序中,我需要从可能扩展到多个页面的大型数据表中获取数据。
我的代码段来生成表格。
Table table = new Table(new float[] {0.4f, 1f, 1f, 1f, 1.3f, 1f, 1.3f, 0.6f,0.6f,1.2f}, true)
.setWidth(UnitValue.createPercentValue(100))
.setMarginTop(tblTopMargin)
.setMarginBottom(0);
int count = 0;
while (!dataList.empty()) {
String[] dataRow = dataList.poll();
createDataRow(dataRow, table);
count++;
if(count % 10 == 0) {
table.flush();
}
}
方法的实现createDataRaw
如下所述,
private void createDataRow(String[] a, Table table) {
for (String s : a) {
Paragraph content = new Paragraph(s)
.setFontSize(7)
.setFixedLeading(9)
.setFontColor(new DeviceCmyk(0, 0, 0, 100));
Cell cell = new Cell()
.setBorder(new SolidBorder(ColorConstants.BLACK, 0.5f))
.setPaddingLeft(2)
.setPaddingTop(0)
.setPaddingBottom(0)
.setHorizontalAlignment(HorizontalAlignment.LEFT)
.setVerticalAlignment(VerticalAlignment.MIDDLE)
.add(content);
table.addCell(cell);
}
}
使用所有数据生成的给定代码表。但是当表格之间有分页符时,除了最后一个表格底部之外,表格的底线不会显示。
此处附上屏幕截图以获得更清晰的想法。
有人可以帮我解决这个问题吗?
解决方案
以下代码为我生成了最新7.1.16
版本的 iText 所需的结果:
Table table = new Table(new float[] {0.4f, 1f, 1f}, true)
.setWidth(UnitValue.createPercentValue(100))
.setMarginBottom(0);
document.add(table);
int count = 0;
for (int i = 0; i < 300; i++) {
String[] dataRow = new String[] {"1\n2\n3\n4\n5\n6\n7\n8\n9\n10", "2\n3\nsf\n43", "3\nr\nsdfsd\n43"};
createDataRow(dataRow, table);
count++;
if (count % 10 == 0) {
table.flush();
}
}
table.complete();
document.close();
private void createDataRow(String[] a, Table table) {
for (String s : a) {
Paragraph content = new Paragraph(s)
.setFontSize(7)
.setFixedLeading(9)
.setFontColor(new DeviceCmyk(0, 0, 0, 100));
Cell cell = new Cell()
.setBorder(new SolidBorder(ColorConstants.BLACK, 0.5f))
.setPaddingLeft(2)
.setPaddingTop(0)
.setPaddingBottom(0)
.setHorizontalAlignment(HorizontalAlignment.LEFT)
.setVerticalAlignment(VerticalAlignment.MIDDLE)
.add(content);
table.addCell(cell);
}
}
视觉结果(第一页结束):
推荐阅读
- c# - 对多个 api 控制器的 Jmeter 负载测试
- python - Python - 在函数调用期间检测星号(*)
- html - Angular - 如何放置一个对象
在 BehaviorSubject 中 - java - 如何仅记录来自 WebClient 的 POST ant PATCH 请求
- css - 如何使用 CSS(在 Firefox 中)仅隐藏垂直滚动条?
- reactjs - 我的数据测试 ID 在那里,但我的测试找不到它反应酶开玩笑单元测试
- swiftui - 如何在 macOS 上更改禁用的 SwiftUI TextField 的背景和前景色
- java - 如何在java中从s3获取触发lambda的文件名
- c - 从 Windows 10 微过滤器驱动程序中的注册表读取
- c++ - 为什么 views::reverse 可以将 non-sized_range 转换为 size_range?