将动态 PdfPCell 宽度分配给动态生成的 PdfPCell
本文关键字:动态 PdfPCell 分配 | 更新日期: 2023-09-27 18:35:36
我正在使用iTextSharp版本5.4.5.0。
我正在尝试使用多个PdfPCell打印PdfPTable。PdfPCell的数量将是动态的。那么如何为动态生成的 PdfPCell 分配宽度呢?
我知道如何为静态和固定数量的单元格分配宽度。但是对于动态单元格,如何为每个动态生成的单元格分配宽度?PdfPCell的数量不是固定的。
请帮帮我 ?
谢谢。
即使在对原始问题的评论中来回切换后,我也不完全确定我是否正确理解了这个问题,但让我们尝试一下:
因此,让我们假设您事先不知道列数,但需要获取第一行的单元格以了解列数及其宽度。在这种情况下,您可以简单地执行以下操作:
public void CreatePdfWithDynamicTable()
{
using (FileStream output = new FileStream(@"test-results'content'dynamicTable.pdf", FileMode.Create, FileAccess.Write))
using (Document document = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(document, output);
document.Open();
PdfPTable table = null;
List<PdfPCell> cells = new List<PdfPCell>();
List<float> widths = new List<float>();
for (int row = 1; row < 10; row++)
{
// retrieve the cells of the next row and put them into the list "cells"
...
// if this is the first row, determine the widths of these cells and put them into the list "widths"
...
// Now create the table (if it is not yet created)
if (table == null)
{
table = new PdfPTable(widths.Count);
table.SetWidths(widths.ToArray());
}
// Fill the table row
foreach (PdfPCell cell in cells)
table.AddCell(cell);
cells.Clear();
}
document.Add(table);
}
}