Как выровнять несколько таблиц, добавленных в одну таблицу, с помощью itextsharp в c#? - PullRequest
1 голос
/ 25 мая 2020

Я создал таблицу с 3 столбцами и другую таблицу с 6 столбцами, которая затем добавляется к другой таблице, чтобы превратить ее в единую таблицу. Я хочу выровнять второй столбец таблицы из 3 столбцов и вторые столбцы таблицы из 6 столбцов следующим образом:

Expected result

Кто-нибудь может сказать мне, как выровнять вторые столбцы 2 разных таблиц? Я использую iTextsharp для создания таблиц.

1 Ответ

0 голосов
/ 28 мая 2020

Есть несколько способов сделать это. Я объясню два.

Две таблицы с выровненными ширинами столбцов

Установите ширину столбцов, чтобы получить желаемое выравнивание.

// Table with 3 columns
PdfPTable table1 = new PdfPTable(3);
table1.SetTotalWidth(new float[] { 50, 10, 300 });

table1.AddCell("One");
table1.AddCell(" ");
table1.AddCell(" ");

// Table with 6 columns
PdfPTable table2 = new PdfPTable(6);
// Column 1 and 2 are the same widths as those of table1
// Width of columns 3-6 sum up to the width of column 3 of table1
table2.SetTotalWidth(new float[] { 50, 10, 120, 50, 10, 120 });
for (int row = 0; row < 2; row++)
{
    for (int column = 0; column < 6; column++)
    {
        table2.AddCell(" ");
    }
}

doc.Add(table1);
doc.Add(table2);

Output 1

... с внешней таблицей

Вы упомянули добавление обеих таблиц в другую таблицу. Если это явное требование, это возможно:

// Outer table with 1 column
PdfPTable outer = new PdfPTable(1);

// create table1 and table2 like in the previous example

// Add both tables to the outer table
outer.AddCell(new PdfPCell(table1));
outer.AddCell(new PdfPCell(table2));

doc.Add(outer);

Визуальный результат такой же, как указано выше.

Использование colspans

Вместо того, чтобы думать о двух отдельных таблицах, вы можно также рассмотреть эту таблицу, в которой некоторые ячейки занимают несколько столбцов.

// Table with 6 columns
PdfPTable table = new PdfPTable(6);
table.SetWidths(new float[] { 50, 10, 120, 50, 10, 120 });

table.AddCell("Two");
table.AddCell(" ");
// Third cell on the first row has a colspan of 4
PdfPCell cell = new PdfPCell();
cell.Colspan = 4;
table.AddCell(cell);

// Second and third row have 6 cells
for (int row = 0; row < 2; row++)
{
    for (int column = 0; column < 6; column++)
    {
        table.AddCell(" ");
    }
}

doc.Add(table);

Output 2

Преимущество этого подхода в том, что у вас нет возиться с сохранением согласованности ширины столбцов между несколькими таблицами. Поскольку это одна таблица, столбцы всегда будут выровнены.

...