0

我正在使用 DynamicPDF 库来排版表格数据,但我对 Table2 和 Cell2 对象的 width 属性的工作原理不完全了解。具体来说,我不知道属性设置的宽度是内部宽度,还是外部宽度。对于一个Table2对象,不知道是否包含了表格的左右边框。对于一个Cell2对象,不知道是包含左右边框还是包含左右内边距。就此而言,我不完全理解为什么我们被允许设置表格的宽度 - 当然宽度从逻辑上遵循表格列的宽度,在这种情况下修改表格宽度的正确方法是修改列宽?

了解表格宽度是否特别包括其边框会很有用,因为我想排版作为页面宽度的表格(或者更确切地说,是页边距内区域的宽度)。如果 Table2 的宽度属性包括边框宽度,那么正确的方法是将宽度设置为页面宽度。如果不是,那么正确的做法是先减去左右边框宽度。如果我做错了,那么桌子要么太宽要么太窄。

这些 页面似乎是最新的文档,但它们没有指定是否包含边框/填充(他们只是说“获取或设置表格的宽度。 ”和“获取单元格的宽度。 ” )这个页面有使用 Table2 类的例子,但它们都使用硬编码的宽度。

4

1 回答 1

1

表格宽度与列宽无关。不能通过修改列宽来修改表格宽度。使用动态数据生成表格时,设置表格宽度允许您指定呈现内容的区域,并且超出这些边界的任何内容都会溢出到新表格中。例如,如果列宽的总和大于表格宽度,则不在表格边界内的列将被推到溢出表中,可以使用 GetOverflowColumns() 访问该溢出表。

边框宽度不包括在表格宽度中。另一方面,单元格宽度包括单元格边框宽度和单元格内边距。这是演示如何设置不同宽度的代码。

Document document = new Document();
Page page = new Page(); 

Table2 table = new Table2(0, 0, 300, 500);
table.Border.Width = 5;
table.Border.Color = RgbColor.Red;
table.Columns.Add(100);
table.Columns.Add(100);
table.Columns.Add(100);

Row2 row = table.Rows.Add(); 

Cell2 cell = row.Cells.Add("Cell 1");
cell.Padding = 5;
cell.Border.Width = 5;
cell.Border.Color = RgbColor.Blue;

Cell2 cell2 = row.Cells.Add("Cell 2");
cell2.Padding = 5;
cell2.Border.Width = 5;
cell2.Border.Color = RgbColor.Green;

Cell2 cell3 = row.Cells.Add("Cell 3");
cell3.Padding = 5;
cell3.Border.Width = 5;
cell3.Border.Color = RgbColor.DarkOrange;

page.Elements.Add(table);

page.Elements.Add(new LayoutGrid());
page.Elements.Add(new Label("Table Width: " + table.Width.ToString(), 0, 50, 200, 20));

document.Pages.Add(page);

document.Draw("Table2.pdf");

免责声明:我在开发 DynamicPDF 库的公司 ceTe Software 工作。

于 2014-08-06T13:35:40.900 回答