0

我们正在用 DynamicPDF 写一个表格,但我们想对行进行“分组”,这样在组的中间就不会出现分页符。这些组从一到六行不等。有没有人找到办法做到这一点?这是我们的代码:

// Create a PDF Document 
Document document = new Document();

Table2 table = new Table2(0, 0, 200, 700);

// Add columns to the table
table.Columns.Add(100);
table.Columns.Add(100);

// This loop populates the table 
for (int i = 1; i <= 400; i++)
{
   Row2 row = table.Rows.Add(20);
   row.Cells.Add("Row #" + i);
   row.Cells.Add("Item");
}

// This loop outputs the table to as many pages as is required
do
{
   Page page = new Page();
   document.Pages.Add(page);
   page.Elements.Add(table);
   table = table.GetOverflowRows();
} while (table != null);
4

1 回答 1

1

没有属性或方法可以直接执行此操作,但您可以按如下方式实现:

  1. 使用 Row2.ActualRowHeight 属性获取每行的高度(这将是根据您的数据输出时的实际高度)。
  2. 一旦您找到了希望表格中断的位置(在考虑了行组之后),请将 Table2.Height 属性设置为这些行的总和。
  3. 调用 Table2.GetOverflowRows() 以获取包含剩余行的溢出表。
  4. 注意 Table2.VisibleStartRow 值作为溢出表的起始行,并从 #1 重复直到 Table2.GetOverflowRows() 返回 null。

请记住,如果您将 Table2.RepeatRowHeaderCount 属性设置为 > 0,则需要在每个溢出表的计算中包含这些标题行(上面的#2)。

完全披露,我为 DynamicPDF 的制造商 ceTe Software 工作。

于 2019-02-06T17:42:36.510 回答