使用iText将行添加到PDF表格中

时间:2014-06-23 06:04:02

标签: java itext

我在这段代码中得到的是一个包含8列和3行的表。 我该怎么办才能获得2排?并且3行中的第1列是空的,但剩余的单元格用“hi”填充。

        PdfPTable table = new PdfPTable(8);

        PdfPCell cell;

        cell = new PdfPCell();
        cell.setRowspan(2);
        table.addCell(cell);

        for(int aw=0;aw<8;aw++){
            table.addCell("hi");
        }

5 个答案:

答案 0 :(得分:5)

试试这个:

PdfPTable table = new PdfPTable(8);

    PdfPCell cell;
    for(int aw=0;aw<8;aw++)
    {
        cell = new PdfPCell(new Paragraph("hi"));
        table.addCell(cell );
    }

修改

    // Step 1
    Document document = new Document();
    // step 2
    PdfWriter.getInstance(document, new FileOutputStream(filename));
    // step 3
    document.open();
    // step 4

PdfPTable table = new PdfPTable(8);
   for(int aw=0;aw<16 ; aw++){
        table.addCell("hi");
    }



    // Step 5
    document.add(table);
    // step 6
    document.close();

有关完整示例代码和SimpleTable

,请参阅resulting PDF

enter image description here

正如您在屏幕截图中看到的那样,该表有8列和2行(如预期的那样)。

阅读原始问题,我看到第一列有一个带有colspan 2的单元格。考虑到这一点,这只是一个很小的改动:

PdfPTable table = new PdfPTable(8);
PdfPCell cell = new PdfPCell(new Phrase("hi"));
cell.setRowspan(2);
table.addCell(cell);
for(int aw = 0; aw < 14; aw++){
    table.addCell("hi");
}

现在结果如下:

enter image description here

再次是8列和2行,但现在第一列中的单元格跨越两行。

答案 1 :(得分:0)

您创建一个包含8列的表格,总共添加了17个单元格。这显然会导致创建三行。也许你打算这样做:

PdfPTable table = new PdfPTable(8);

for(int aw=0;aw<16;aw++){
    table.addCell("hi");
}

答案 2 :(得分:0)

亲爱的srinivasan您添加的代码将只打印一行7列,第一列将包含rowspan2。 要打印8行,您需要使用8列的表格,并在每个变量的变量中使用for循环&#39; aw&#39;一个单元格将被添加到表格中,并且每8个单元格中的一个单元格将被添加到表格中。将创建新行。以获得8行 尝试在代码中循环for循环:

PdfPTable table = new PdfPTable(8);      
 for(int aw=0;aw<64;aw++)
 {
   table.addCell("hi");
 }

答案 3 :(得分:0)

2019年的iText 7。

制作Table对象时,将宽度指定为要添加的列数。

int numberOfColumns = 10;
Table table = new Table(numberOfColumns);

然后,您可以设置整个表格的宽度等。

table.setWidth(new UnitValue(UnitValue.PERCENT, 50));
table.setMaxWidth(new UnitValue(UnitValue.PERCENT, 100));
table.setFontSize(6f);

之后,您可以添加带有内容的单元格并控制其外观:

Cell cell = new Cell();
cell.setBorder(Border.NO_BORDER);
Paragraph paragraph = new Paragraph("hi");
paragraph.setTextAlignment(TextAlignment.LEFT);
paragraph.setBold();
//Instead of text you can add images and such in the same way
cell.add(paragraph);
//Insert cell into table
table.addCell(cell);

iText只会继续添加您的单元格,直到该行的单元格插槽用完为止,然后自己创建一个新行并开始将单元格注入其中。

答案 4 :(得分:0)

简单的使用方法。 使用磁贴标题(名称和姓氏)的示例,它包含 2 列,因此:

姓名 |姓 阿尔法 |测试版 伽玛|厄普西隆

'values' 是我的单元格。我只会用

var table = PdfPTable(2)
values = ["Alfa", "Beta", "Gamma", "Epsilon"] 
for value in values{ 
  var cell = PdfPCell()
  cell.setPhrase(Phrase(reveza.cpfMotorista))
  table.addCell(cell)
  table.add(value) 
}

itextpdf 将填充表格中的每个单元格(水平),直到达到 2 列并转到下一行。

[使用 kotlin 语言]