簡體   English   中英

使用 iText 在 PDF 表格中添加一行

[英]Adding a row to a table in PDF using iText

我在這段代碼中得到的是一個有 8 列和 3 行的表格。

我該怎么做才能得到 2 行? 並且 3 行中的第一列是空的,但剩余的單元格填充了“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");
}

嘗試這個:

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

有關完整示例代碼和生成的 PDF,請參閱SimpleTable

在此處輸入圖片說明

正如您在屏幕截圖中看到的,該表有 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");
}

現在的結果是這樣的:

在此處輸入圖片說明

同樣是 8 列和兩行,但現在第一列中的單元格跨越了兩行。

您創建了一個包含 8 列並總共添加 17 個單元格的表格。 這顯然會導致創建三行。 也許你打算這樣做:

PdfPTable table = new PdfPTable(8);

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

親愛的 srinivasan,您添加的代碼將僅打印一行 7 列,第一列將具有 rowspan2。 要打印 8 行,您使用 8 列的表格,並在 for 循環中為變量 'aw' 的每個增量添加一個單元格,並且對於 'aw' 的每 8 的倍數將創建新行。所以得到8 行在代碼中嘗試 flowwing for 循環:

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

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 將簡單地繼續添加您的單元格,直到它用完該行上的單元格的插槽,然后自己創建一個新行並開始在那里注入單元格。

一個簡單的使用方法。 使用磁貼標題(名稱和姓氏)的示例,它包含 2 列,因此:

姓名 | 姓氏阿爾法 | β 伽瑪 | 厄普西隆

“價值觀”是我的細胞。 我只會用

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語言]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM