使用 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 中的一个错误。
- 我在 html table 中找到了一个 each 控件。如果这个控件是 Table 我打电话
它 'tblinner'.
我在里面找到一个控件(在本例中所有控件都是标签)
'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;
}
}
- 它接受传递给它的控件。
- 创建一个单元格并将此控件放入单元格并将单元格添加到 table
作为参数传递给它。
您还应该 post 为方法 AddControlBGToPDFTable 编写代码,以便我们可以看到您为单元格设置了哪些属性。
您可以使用 PdfPCell
和 PdfPTable
.
而不是创建带有标签的单元格
iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell();
cell.Phrase = new iTextSharp.text.Phrase("some text");
我正在尝试将具有 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 中的一个错误。
- 我在 html table 中找到了一个 each 控件。如果这个控件是 Table 我打电话 它 'tblinner'.
我在里面找到一个控件(在本例中所有控件都是标签) '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;
}
}
- 它接受传递给它的控件。
- 创建一个单元格并将此控件放入单元格并将单元格添加到 table 作为参数传递给它。
您还应该 post 为方法 AddControlBGToPDFTable 编写代码,以便我们可以看到您为单元格设置了哪些属性。
您可以使用 PdfPCell
和 PdfPTable
.
iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell();
cell.Phrase = new iTextSharp.text.Phrase("some text");