Migradoc - 标题出现在标题后附加的文本

问题描述 投票:0回答:2

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

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

c# migradoc
2个回答
1
投票

可以通过在段落前显式添加空格来解决问题。

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

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
投票

MigraDoc 不计算标题的高度。由您设置上边距以预留标题空间。

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

© www.soinside.com 2019 - 2024. All rights reserved.