Выравнивание текста по изображению с помощью MigraDoc

У меня есть заголовок в этом формате -

"Заголовок" "Имидж" "Заголовок"

Ниже приведен фрагмент кода, который я использую для достижения этой цели -

    Paragraph header = section.Headers.Primary.AddParagraph("Heading");            
    header.Format.Font.Bold = true;
    header.AddTab();
    Image image = header.AddImage("../../Images/logo.png");
    image.Height = Unit.FromMillimeter(6);
    header.AddFormattedText("Title", TextFormat.NotBold);

Мне нужно выровнять "Изображение" и "Название" таким образом, чтобы заголовок был выровнен по центру по вертикали относительно высоты изображения, как я могу этого добиться?

Любые указатели / фрагмент кода очень ценятся.

2 ответа

Решение

Вы можете использовать таблицу для размещения всей информации в определенной структуре:

// create document
Document MigraDokument = new Document();

// create section. 
Section section = MigraDokument.AddSection();            
section.PageSetup.PageFormat = PageFormat.A4;

// create a table
Table t = section.AddTable();
// size to use for the image and the image cell in the table
int size = 6;

// create 3 columns
Column column_header = t.AddColumn("6cm");
column_header.Format.Alignment = ParagraphAlignment.Center;

Column column_image = t.AddColumn(Unit.FromMillimeter(size));
column_image.Format.Alignment = ParagraphAlignment.Center;

Column column_text = t.AddColumn("4cm");
column_text.Format.Alignment = ParagraphAlignment.Center;

// Add 1 row to fill it with the content
Row r = t.AddRow();

// add you Header
Paragraph header = r.Cells[0].AddParagraph("Heading");
header.Format.Font.Bold = true;
header.AddTab();

// add the image            
Image image = r.Cells[1].AddImage("../../logo.png"); 
image.Height = Unit.FromMillimeter(size);

// Add your Title
r.Cells[2].AddParagraph("Title");

// allign all of them
r.Cells[0].VerticalAlignment = VerticalAlignment.Center;
r.Cells[1].VerticalAlignment = VerticalAlignment.Center;
r.Cells[2].VerticalAlignment = VerticalAlignment.Center;

В моем документе результат выглядит следующим образом:

Спасибо @MongZhu за предложение табличного способа, размещение фрагмента кода, который я использую сейчас, только для дальнейшего использования.

        Table table = section.Headers.Primary.AddTable();
        table.AddColumn("11cm");
        table.AddColumn("2cm");
        table.AddColumn("8cm");

        Row row = table.AddRow();
        row.VerticalAlignment = VerticalAlignment.Center;
        Paragraph header = row.Cells[0].AddParagraph("Heading");
        header.Format.Font.Bold = true;                        
        Image image = row.Cells[1].AddImage("../../Images/logo.png");
        image.Height = Unit.FromMillimeter(6);
        row.Cells[2].AddParagraph("Title");
Другие вопросы по тегам