我有一个旧的 ASP.NET 项目,最初是在 ASP.NET 1.1 中使用 iText.NET 完成的,然后转换为 .NET 2.0 和 iTextSharp 4.1.6.0。 它使用了大量的表(我假设 pdfptable 在创建时不是一个选项。)我试图转换此代码以使用最新的 iTextSharp 5.0.0 dll,现在看到表和单元格已被删除。 不管怎样,我开始对其进行转换,很快发现 Table 提供的许多功能都没有等效项。 主要是 AddCell 不再允许 col,row 设置。 这段代码中实际上有数千个这样的调用,而将其更改为逐行线性生成的可能性目前看起来毫无希望。 当前的代码看起来像这样:
Dim myTable As New Table(NumReq + 2, IngDS.Tables(0).Rows.Count + 3)
myTable.SetWidths(Width)
myTable.Width = 100
myTable.Padding = 2
myCell = New Cell(New Phrase("Some Text", New iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 8, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.BLACK)))
myCell.SetHorizontalAlignment(Element.ALIGN_RIGHT)
myCell.GrayFill = 0.75
myTable.AddCell(myCell, Row, Col)
myCell = New Cell(New Phrase("Other Text",New iTextSharp.text.Font(iTextSharp.text.Font.HELVETICA, 8, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.BLACK)))
myCell.GrayFill = 0.75
myTable.AddCell(myCell, Row, Col+1)
在我走上这条路之前,我希望有人能够为我指出一个我完全错过的方向,这将使这个转换变得更加简单。
有什么想法吗?
谢谢。
您不再需要在AddCell方法中指定行和列。 调用 AddCell 方法只会将要添加的内容添加到下一个单元格中。 因此,如果您有一个包含两行和两列的表格,第一次调用 AddCell 会将其添加到第 1 行第 1 列。第二次调用它会将其添加到第 1 行第 2 列。下一次调用它会将其添加到第 2 行第 1 列,依此类推。
如果您想跳过调用 AddCell("") 以在单元格中不添加任何内容并跳过它。
如果您尝试将 Table 对象转换为 PdfPTable 对象,您可能需要尝试
table.Convert2Pdfptable = true;
var pdfPTable = table.CreatePdfPTable();