Adding a row to a table in PDF using iText

拈花ヽ惹草 提交于 2019-12-20 06:03:06

问题


What I'm getting in this code is a table with 8 columns and 3 rows.

What should I do to get just 2 rows? And the 1st column in the 3 rows are empty, but the remaining cells are filled with "hi".

Code:


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");
}

回答1:


Try this:

PdfPTable table = new PdfPTable(8);

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

EDIT:

    // 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();

See SimpleTable for the full sample code and the resulting PDF:

As you can see in the screen shot, the table has 8 columns and 2 rows (as expected).

Reading the original question, I see that the first column has a cell with colspan 2. It's only a small change to take this into account:

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");
}

Now the result looks like this:

Again 8 columns and two rows, but now the cell in the first column spans two rows.




回答2:


Your creating a table with 8 columns and adding 17 cells in total. This obviously results in three rows being created. Perhaps you meant to do this:

PdfPTable table = new PdfPTable(8);

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



回答3:


dear srinivasan the code you added will print only one row with 7 columns and first column will have rowspan2. To print 8 rows ,you took table of 8 columns and in for loop for every increment of variable 'aw' one cell will be added to the table and for every multiple of 8 of 'aw' new row will be created.so to get 8 rows try folowwing for loop in code:

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



回答4:


iText 7 in 2019.

When making a Table object, you specify the width as the number of columns you want to add.

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

Then you can set how wide you want the whole table to be etc.

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

After which you can add cells with content and manipulate their look:

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 will simply keep adding your cells until it runs out of slots for cells on that row and then creates a new row by itself and starts injecting cells there.



来源:https://stackoverflow.com/questions/24359321/adding-a-row-to-a-table-in-pdf-using-itext

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!