Migradoc - 在 Header 之后附加的文本出现在 Header 之后

Migradoc - Text Appended After Header Appears Over Header

我正在使用以下代码创建带有 header 的 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);
}

效果很好,因为文档看起来像我期望的样子。问题开始的地方是如果我尝试使用以下内容向文档 body 添加文本:

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

实际情况是文本出现在 header 上方,而不是出现在 header 底部的顶部,这正是我所期望的。我错过了什么?文档 header 的高度是否未计算为适合其内容的大小?

问题可以通过在段落前明确添加space来解决。

在段落前添加 space 的示例代码片段:

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

MigraDoc 不计算 header 的高度。由您设置为 header.

预留 space 的上边距

第一页通常更大 header。在这种情况下,对第一页的第一段使用 SpaceBefore 是一个很好的解决方法。