我正在尝试使用 itext v5.5.3 创建一个包含大表的 pdf。
我需要 :
- 内存管理
- 重复标题(1 行)
- 禁用行拆分
使用下面的代码,一切正常:
Document document = new Document(PageSize.LETTER);
PdfWriter.getInstance(document, baos);
document.open();
PdfPTable table = new PdfPTable(5);
table.setHeaderRows(1);
//table.setSplitRows(false);
//table.setComplete(false);
for (int i = 0; i < 5; i++) {table.addCell("Header " + i);}
for (int i = 0; i < 500; i++) {
table.addCell("Test " + i);
//if (i%5 == 0) {document.add(table);}
}
//table.setComplete(true);
document.add(table);
document.close();
如果我添加内存管理(每 5 个单元格添加表格到文档),我将丢失第一个标题:
Document document = new Document(PageSize.LETTER);
PdfWriter.getInstance(document, baos);
document.open();
PdfPTable table = new PdfPTable(5);
table.setHeaderRows(1);
//table.setSplitRows(false);
table.setComplete(false);
for (int i = 0; i < 5; i++) {table.addCell("Header " + i);}
for (int i = 0; i < 500; i++) {
table.addCell("Test " + i);
if (i%5 == 0) {document.add(table);}
}
table.setComplete(true);
document.add(table);
document.close();
如果我添加内存管理 + setSplitRows(false),我会丢失所有标题和一些行:
Document document = new Document(PageSize.LETTER);
PdfWriter.getInstance(document, baos);
document.open();
PdfPTable table = new PdfPTable(5);
table.setHeaderRows(1);
table.setSplitRows(false);
table.setComplete(false);
for (int i = 0; i < 5; i++) {table.addCell("Header " + i);}
for (int i = 0; i < 500; i++) {
table.addCell("Test " + i);
if (i%5 == 0) {document.add(table);}
}
table.setComplete(true);
document.add(table);
document.close();
我已经做了一些测试,使用 itext 版本 2.1.7.js2,所有三个测试用例都正常工作。
那么,错误还是非错误?我该怎么做才能使它正常工作?
谢谢