【发布时间】:2023-03-07 05:01:01
【问题描述】:
我正在使用 iTextSharp 创建一个 PDF 文档。我看到了如何创建一个包含多个列的新表,但无论如何我都看不到动态添加一个新列。我的问题是我不会马上知道我需要的列数,所以需要继续添加它们
有人可以告诉我,还是每次我需要添加一列时我都必须重新创建表?
谢谢 垫子
【问题讨论】:
标签: c# itextsharp pdfptable
我正在使用 iTextSharp 创建一个 PDF 文档。我看到了如何创建一个包含多个列的新表,但无论如何我都看不到动态添加一个新列。我的问题是我不会马上知道我需要的列数,所以需要继续添加它们
有人可以告诉我,还是每次我需要添加一列时我都必须重新创建表?
谢谢 垫子
【问题讨论】:
标签: c# itextsharp pdfptable
那么创建一个包含您想要的表格并且能够为您创建 PDF 表格的中间模型不是有意义吗?
我知道这听起来需要做很多工作,但从长远来看,它应该会有所帮助,因为您可以在构建它们时动态更改行和列,然后在最后简单地“编译”表并吐出 PdfPTable 对象?
【讨论】:
PdfPTable 表在列数创建后是不可变的。
我能想到的唯一解决方法是从一大堆列开始,然后……不,这也行不通。您甚至无法将单元格添加到现有行。我在想你可以使用列跨越来掩盖你的额外列并在向行添加更多单元格时调整它们,但这也行不通。
您必须在添加列时重建表。没办法。
我强烈建议您首先在创建表之前弄清楚如何确定列数……即使您必须“试运行”数据。使用一些中间格式(String[][] 或其他格式)来保存您的数据,然后从中构建表格,而不是您的数据。或者至少跟踪您需要多少列。
鉴于大量数据,单次通过可能不切实际/不可能。但是多次重建你的整个桌子也好不了多少。这确实是一个性能调整问题,只有您有信息可以回答。
【讨论】:
ITextSharp 表格的工作方式与 HTML 表格不同(我猜你已经习惯了)。
您只需要告诉它您拥有的列数,然后继续添加单元格。
假设您创建了一个包含 5 列的 pdfptable。您添加的第 5 个单元格将位于第一行,而第 6 个单元格将位于您的第 2 行的第 1 列。
唯一的缺点是,如果您需要添加并非所有单元格都已填充的行,但我通常只需添加一个空单元格或一个包含空格的单元格即可解决此问题。
【讨论】: