2014-09-24 2 views
2

С 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); 

Получаю таблицу, расположенную справа от страницы; как я могу получить таблицу в центре страницы?

ответ

6

Вы можете установить table.Rows.LeftIndent для отступов таблицы. Чтобы получить центрированную таблицу, вычислите отступ на основе размера бумаги, полей страницы и ширины таблицы.

Пример: Размер бумаги A4 (ширина 21 см), левое и правое поля 2,5 см каждая. Таким образом, у нас есть страница размером 16 см.
Для центровки стола шириной 12 см, стола. Рамки должны быть установлены на 2 см (ширина стола 16 см минус 12 см. Ширина стола составляет 4 см. Остальное пространство - половина оставшегося пространства должна быть установлена ​​как левая сторона).
Из фрагмента кода в исходном вопросе удалите table.Format.Alignment=ParagraphAlignment.Center; и замените его на table.Rows.LeftIndent="2cm";.

Обратите внимание, что это также будет работать, если таблица немного шире, чем тело, но все же в пределах границ страницы. Используя настройку страницы из предыдущего примера, таблица шириной 18 см может быть центрирована с помощью LeftIndent на -1 см.

Пример кода (таблица имеет только один столбец):

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!"); 

Пример кода использует сантиметровую для расчетов. Вы также можете использовать Inches, Millimeter, Picas или Points. Размер страницы по умолчанию - A4, а в образце LeftIndent будет 4 см.

+0

Он решает, спасибо! – MartinaLabMath

+1

дайте пример расчета, а не просто описание – JJS

+0

нижний нисходящий пример без кода. Измените вопрос и добавьте образец кода, и я перейду на верхнюю часть. Линус Торвальдс «Обсуждение дешево, покажите мне код» – JJS

7

Чтобы центрировать стол в центре раздела.

table.Rows.Alignment = RowAlignment.Center; 
+1

Работает отлично, без каких-либо вычислений. – OlivierH

+1

Большое спасибо! – Christos

 Смежные вопросы

  • Нет связанных вопросов^_^