Migrado c - текст, добавляемый после появления заголовка над заголовком - PullRequest
1 голос
/ 25 марта 2020

Я использую следующий код для создания PDF с заголовком, где слева находится изображение, а затем информация о документе справа от изображения:

var header = section.Headers.Primary.AddTable();
header.AddColumn("1in");
header.AddColumn("6in");
var headerRow = header.AddRow();
headerRow.HeadingFormat = true;

var logo = headerRow.Cells[0].Elements.AddImage(@"...image.png");
logo.Width = "48pt";
logo.LockAspectRatio = true;
logo.RelativeVertical = RelativeVertical.Line;
logo.RelativeHorizontal = RelativeHorizontal.Margin;
logo.Top = ShapePosition.Top;
logo.Left = ShapePosition.Left;
logo.WrapFormat.Style = WrapStyle.TopBottom;

headerRow.Cells[1].Elements.AddParagraph($"Approved{Environment.NewLine}Generation Timestamp: {DateTime.Now:yyyy-MM-dd hh:mm:ss tt}");
var documentDetails = headerRow.Cells[1].Elements.AddParagraph();
var sentenceParts = new Dictionary<string, string>
{
    { "Name: ", "Smith, John" },
    { "Date Of Birth: ", "1999-01-01" },
    { "ID: ", "123456" }
};

var boldedFont = new Font(document.Styles.Normal.Font.Name, 6) {Bold = true};
var unboldedFont = new Font(document.Styles.Normal.Font.Name, 6);
foreach (var sentencePart in sentenceParts)
{
    documentDetails.AddFormattedText(sentencePart.Key + " ", boldedFont);
    documentDetails.AddFormattedText(sentencePart.Value + " ", unboldedFont);
}

Это прекрасно работает в что документ выглядит так, как я ожидаю. Проблема начинается с того, что я пытаюсь потом добавить текст в тело документа, используя следующее:

section.AddParagraph("Here is some test text that should appear after the header.");

В результате текст появляется поверх заголовка, а не вверху внизу заголовка, что это то, что я ожидал. Что мне не хватает? Разве высота заголовка документа не рассчитывается, чтобы соответствовать размеру его содержимого?

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Проблема может быть решена путем явного добавления пробела перед абзацем.

Пример фрагмента кода для добавления пробела перед абзацем:

Paragraph myParagraph = section.AddParagraph("Here is some test text that should appear after the header.");
myParagraph.Format.SpaceBefore = "10cm";

Подробнее информация:

http://www.pdfsharp.net/wiki/HelloMigraDoc-sample.ashx

0 голосов
/ 25 марта 2020

MigraDo c не вычисляет высоту заголовка. Вы должны установить верхнее поле для резервирования места для заголовка.

Довольно часто первая страница имеет больший заголовок. В этом случае использование SpaceBefore для первого абзаца на первой странице - хороший обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...