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";
更多信息:
MigraDoc 不计算 header 的高度。由您设置为 header.
预留 space 的上边距
第一页通常更大 header。在这种情况下,对第一页的第一段使用 SpaceBefore 是一个很好的解决方法。
我正在使用以下代码创建带有 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";
更多信息:
MigraDoc 不计算 header 的高度。由您设置为 header.
预留 space 的上边距第一页通常更大 header。在这种情况下,对第一页的第一段使用 SpaceBefore 是一个很好的解决方法。