Table2或Cell2的宽度是否包含边框?对于Cell2,它是否包含填充?

时间:2014-07-22 15:49:02

标签: dynamicpdf dynamicpdf-table2

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

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

These pages似乎是最新的文档,但是他们没有指定是否包含边框/填充(他们只是说" 获取或设置表的宽度。"和" 获取单元格的宽度。")This page包含使用的示例Table2类,但它们都使用硬编码宽度。

1 个答案:

答案 0 :(得分: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工作。