MigraDoc - 获得部分高度

时间:2018-05-02 12:26:42

标签: c# migradoc

我想要实现的是在页面上两次使用相同的内容,用虚线分隔,使用填充,以便一个副本位于上半部分,第二个副本位于下半部分。像firstSection.SpaceAfter = (height of page / 2) - (height of first section)

这样的东西

tl; dr:如何在添加所有内容后计算第一部分的高度?

我有这个,它有复制的内容和虚线,但我需要填充。

Document document = new Document();
document.Info.Title = "Testing";

Style style = document.Styles["Normal"];
style.Font = new Font("Times New Roman", 12);

Section section = document.AddSection();
section.PageSetup = document.DefaultPageSetup.Clone();

Paragraph paragraph = section.AddParagraph("Hello");
paragraph = section.AddParagraph("World");
paragraph = section.AddParagraph();
paragraph.Format.Borders.Bottom = new Border
{
    Width = "1pt",
    Color = Colors.Black,
    Style = BorderStyle.DashLargeGap
};

paragraph = section.AddParagraph("Hello");
paragraph = section.AddParagraph("World");

1 个答案:

答案 0 :(得分:1)

回答你的问题:
当您将内容渲染为某种输出格式(例如PDF)时,内容只有一个高度 让PDF Renderer准备文档,然后您就可以查询文档中每个对象的位置和高度。

替代解决方案:
我的尝试#1将是:创建一个Table并设置第一行的高度以覆盖页面的上半部分;将页面下半部分的内容添加到第二行;隐藏边框以使表格不可见 我的尝试#2将是:在页面下半部分的绝对位置创建一个TextFrame;将内容正常添加到该部分,并将它们添加到TextFrame。

在这两种情况下,您都必须确保内容适合半页。