使用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);
我得到一张与页面右侧对齐的表格;如何在页面中心获取表格?
答案 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厘米。