【问题标题】:itext pdf doesn't show table when setHeaderRowssetHeaderRows 时 itext pdf 不显示表格
【发布时间】:2014-09-22 21:15:59
【问题描述】:

我使用 setHeaderRows(N) 创建了一个带有 N 列标题的表,当我向表中添加 N-1 条记录并部署时,没有显示任何内容,即,如果我创建一个具有 5 列标题的表并仅添加 4 条记录或更少,则不显示任何内容。

示例代码

Document document = new Document(new Rectangle(605, 784), 28, 28, 42, 28);
PdfWriter writer = PdfWriter.getInstance(document, new   FileOutputStream("/temp/tabla.pdf"));
documento.open();
// Create table
PdfPTable tabla = new PdfPTable(5);
tabla.setComplete(false);
tabla.setWidthPercentage(100);
tabla.getDefaultCell().setBackgroundColor(BaseColor.WHITE);
tabla.setHeaderRows(5);
// Add Header Rows 
for(int i=1; i<=5; i++)
{
  celda = new PdfPCell();
  Paragraph encabezado = new Paragraph("Header "+i);        
  celda.addElement(encabezado);
  celda.setGrayFill(0.8f);
  tabla.addCell(celda);
}              
// Add some cells               
for(int k=0; k<19; k++)
{
  celda = new PdfPCell();
  Paragraph contenido = new Paragraph("Cell "+k, helvetica11);
  celda.addElement(contenido);                      
  tabla.addCell(celda);
}
// In total add 4 rows

tabla.completeRow(); 
document.add(tabla);
document.close();

通常表格单元格填充来自 SQL 查询的数据,可以返回一条或多条记录,我用单个“for”循环填充表格以显示故障。

有人可以帮我解决这个问题吗?我应该设置什么参数?或任何想法?

【问题讨论】:

    标签: java pdf itext tabular


    【解决方案1】:

    您的表格只包含标题行。您的表中没有实际数据。

    你应该改变:

    tabla.setHeaderRows(5);
    

    进入:

    tabla.setHeaderRows(1);
    

    【讨论】:

    • 如果您在部分注释中看到代码 // 添加一些单元格 -- 添加一些单元格,但它只是演示表,实际上该表是用来自 sql 查询的数据填充的
    • 当添加的行数 >= 5 时,代码可以正常工作,但是任何 sql 查询,获取的记录更少
    • 在这种情况下实际上只需要一行标题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多