使用 itextsharp 将具有 table 的单元格添加到外部 table

Add cell having a table to outer table using itextsharp

我正在尝试将具有 table 的单元格添加到外部 table。 我收到以下错误。

"Adding a cell at the location (6,0) with a colspan of 1 and a rowspan of 1 is illegal (beyond boundaries/overlapping)"

这似乎是 itextsharp 中的一个错误。

  1. 我在 html table 中找到了一个 each 控件。如果这个控件是 Table 我打电话 它 'tblinner'.
  2. 我在里面找到一个控件(在本例中所有控件都是标签) 'tblinner' 并将其添加到 itextsharp table。 我该如何克服这个问题?

                            for (int i = 0; i < tblInner.Rows.Count; i++)
                        {
                            iTextSharp.text.Table tblnested = new iTextSharp.text.Table(4);
                            iTextSharp.text.Table tblnestedbig = new iTextSharp.text.Table(1);
                            iTextSharp.text.Cell pdfTCell = new iTextSharp.text.Cell();
                            iTextSharp.text.Cell pdfTCellbig = new iTextSharp.text.Cell();
                            foreach (TableCell tCellInner in tblInner.Rows[i].Cells)
                            {
                                pdfTCell = new iTextSharp.text.Cell();
                                int cc = tblInner.Rows[i].Cells.Count;
                                Control tControlInnerLabel = tCellInner.Controls[0];
                                pdfTCell = AddControlBGToPDFTable(tControlInnerLabel, tblnested);//This function adds the control such as lable or image to tblnested
                                tblnestedbig.AddCell(pdfTCell);
                            }
                            pdfTCellbig.AddElement(tblnestedbig);
                            pdfTable.AddCell(pdfTCellbig);//i get error here
                        }
    

这是 'AddControlBGToPDFTable' 所做的。

private static iTextSharp.text.pdf.PdfPCell AddControlBGToPDFTable(Control tControl, iTextSharp.text.pdf.PdfPTable pdfTable)
{
(tControl is Label)
{
 Label lbl = (Label)tControl.FindControl(tControl.ID);
 // add some style to control
 iTextSharp.text.pdf.PdfPCell pdfTable2Cell2 = null;
 pdfTable2Cell2.Colspan = 1;
 pdfTable2Cell2 = pdfOrigTCell;
 pdfTable2Cell2.AddElement(new   iTextSharp.text.Phrase(25f,lbl.Text.Replace("<br>", "\r\n").Replace("<br />", "\r\n"), new iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 12, style)));
pdfTable.AddCell(pdfTable2Cell2);
return pdfTCell;
}
}
  1. 它接受传递给它的控件。
  2. 创建一个单元格并将此控件放入单元格并将单元格添加到 table 作为参数传递给它。

您还应该 post 为方法 AddControlBGToPDFTable 编写代码,以便我们可以看到您为单元格设置了哪些属性。

您可以使用 PdfPCellPdfPTable.

而不是创建带有标签的单元格
iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell();
cell.Phrase = new iTextSharp.text.Phrase("some text");