我正在使用 iTextSharp 创建一个 PDF 文档。我看到了如何创建一个包含多个列的新表,但无论如何我都看不到动态添加一个新列。我的问题是我不会马上知道我需要的列数,所以需要继续添加它们
有人可以启发我还是每次我需要添加列时都必须重新创建表?
谢谢垫
我正在使用 iTextSharp 创建一个 PDF 文档。我看到了如何创建一个包含多个列的新表,但无论如何我都看不到动态添加一个新列。我的问题是我不会马上知道我需要的列数,所以需要继续添加它们
有人可以启发我还是每次我需要添加列时都必须重新创建表?
谢谢垫
Wouldn't it then make sense to create an intermediate model which contains the table you want, and is capable of then creating the PDF table for you?
I know it sounds like a lot of work, but in the long run it should help in that you would be able to dynamically alter the rows and columns as you build them, and then at the end, simply "compile" the table and spit out the PdfPTable object?
PdfPTable 表在列数创建后是不可变的。
我能想到的唯一解决方法是从一整列列开始,然后......不,这也行不通。您甚至无法将单元格添加到现有行。我在想你可以使用列跨越来掩盖你的额外列并在向行添加更多单元格时调整它们,但这也行不通。
添加列时必须重建表。没有办法解决它。
我强烈建议您首先在创建表之前弄清楚如何确定列数……即使您必须“试运行”数据。使用一些中间格式(String[][] 或其他格式)来保存您的数据,然后从中构建表格,而不是您的数据。或者至少跟踪您需要多少列。
鉴于大量数据,单次通过可能不切实际/不可能。但是多次重建你的整个桌子也好不了多少。这确实是一个性能调整问题,只有您有信息可以回答。
ITextSharp 表格的工作方式与 HTML 表格不同(我猜你已经习惯了)。
您只需要告诉它您拥有的列数,然后继续添加单元格。
假设您创建了一个包含 5 列的 pdfptable。您添加的第 5 个单元格将位于第一行,第 6 个单元格将位于第 2 行的第 1 列。
唯一的缺点是,如果您需要添加并非所有单元格都已填充的行,但我通常只需添加一个空单元格或一个带有空格的单元格即可解决此问题。