如何将表放在页面的中心?

时间:2014-09-24 08:25:51

标签: c# pdf-generation migradoc

使用MigraDoc我试图将一个表放在页面的中心。 我正在使用此代码(c#,VS)。

Section secondPage = new Section(); 
Table table = new Table();
AddColumns(table);
AddFirstRow(table);
AddSecondRow(table);
table.Format.Alignment=ParagraphAlignment.Center;
secondPage.Add(table);

我得到一张与页面右侧对齐的表格;如何在页面中心获取表格?

2 个答案:

答案 0 :(得分:10)

将一张桌子放在一个区域的中心。

table.Rows.Alignment = RowAlignment.Center;

答案 1 :(得分:6)

您可以将table.Rows.LeftIndent设置为缩进表格。要获得居中的表格,请根据纸张大小,页边距和表格宽度计算缩进。

示例:纸张尺寸为A4(21厘米宽),左右边距均为2.5厘米。因此,我们有一个16厘米的页面 要使12厘米宽的桌子居中,table.Rows.LeftIndent必须设置为2厘米(16厘米的主体宽度减去12厘米的桌子宽度,留出4厘米的剩余空间 - 剩余空间的一半必须设置为LeftIndent)。
在原始问题的代码段中,移除table.Format.Alignment=ParagraphAlignment.Center;并将其替换为table.Rows.LeftIndent="2cm";

请注意,如果表格略宽于正文,但仍在页面边缘内,这也会起作用。使用上一个示例中的页面设置,一个18厘米宽的表可以使用-1厘米的LeftIndent居中。

示例代码(该表只有一列):

var doc = new Document();
var sec = doc.AddSection();

// Magic: To read the default values for LeftMargin, RightMargin &c. 
// assign a clone of DefaultPageSetup.
// Do not assign DefaultPageSetup directly, never modify DefaultPageSetup.
sec.PageSetup = doc.DefaultPageSetup.Clone();

var table = sec.AddTable();
// For simplicity, a single column is used here. Column width == table width.
var tableWidth = Unit.FromCentimeter(8);
table.AddColumn(tableWidth);
var leftIndentToCenterTable = (sec.PageSetup.PageWidth.Centimeter - 
                               sec.PageSetup.LeftMargin.Centimeter - 
                               sec.PageSetup.RightMargin.Centimeter -
                               tableWidth.Centimeter) / 2;
table.Rows.LeftIndent = Unit.FromCentimeter(leftIndentToCenterTable);
table.Borders.Width = 0.5;
var row = table.AddRow();
row.Cells[0].AddParagraph("Hello, World!");

示例代码使用厘米进行计算。您还可以使用英寸,毫米,皮卡或点。 默认页面大小为A4,在样本中,LeftIndent为4厘米。