首页 文章

MigraDoc:对齐页脚上方页面底部的文本或表格

提问于
浏览
0

我正在使用MigraDoc生成PDF . 我想将一些内容与最后一页的底部对齐 . 这是我公司在这些类型的文档中始终包含的样板免责声明信息 . 目标是完全保留内容,并始终将其显示在最后一页的页脚上方 . 如果实际内容的最后一页上没有空间将它们保持在一起,那么应该有一个分页符,样板内容将单独放在页面上 .

我想在不测量内容高度的情况下这样做 .

我得到的印象是我可以使用TextFrame以某种方式帮助解决这个问题,但我找不到任何文档 . 我在网上找到的问题和例子是指能够“绝对定位”TextFrame,但是没有一个例子确实可以做到这一点 .

作为一个起点,我试图按照我在其他空白页面上描述的方式定位一段文本 . 这是我最新的实验:

static void AddBoilerPlate(Section section) {
        var sectionWidth = PdfSharp.PageSizeConverter.ToSize(PageSize.Letter).Width - section.Document.DefaultPageSetup.LeftMargin.Point -
            section.Document.DefaultPageSetup.RightMargin.Point;

        section.AddPageBreak();
        var frame = section.AddTextFrame();
        frame.RelativeVertical = RelativeVertical.Page;
        frame.Width = sectionWidth;
        frame.Top = ShapePosition.Bottom;
        frame.AddParagraph(DisclaimerText);
    }

文本从页脚上方(此屏幕截图中的蓝线)开始,然后在页脚上运行:

enter image description here

一旦我得到一段文字对齐,我想我将能够使用一列一行而不是一行,然后将我的所有内容放在那里 .

更新:这是显示我的目标的屏幕截图(使用分页符和SpaceBefore伪造):

enter image description here

更新:这里有一些相关的文章,并没有让我到达我想去的地方:

更新:请注意,向TextFrame添加高度确实会使文本按照我需要的方式对齐 . 这不是理想的,因为我宁愿不对硬度进行硬编码 . 但它确实产生了预期的效果:

static void AddBoilerPlate(Section section) {
        var sectionWidth = PdfSharp.PageSizeConverter.ToSize(PageSize.Letter).Width - section.Document.DefaultPageSetup.LeftMargin.Point -
            section.Document.DefaultPageSetup.RightMargin.Point;

        section.AddPageBreak();
        var frame = section.AddTextFrame();
        frame.RelativeVertical = RelativeVertical.Page;
        **frame.Height = new Unit(75, UnitType.Millimeter);**
        frame.Width = sectionWidth;
        frame.Top = ShapePosition.Bottom;
        frame.AddParagraph(DisclaimerText);
    }

更新:请注意,设置TextFrame高度不能解决最终问题 . 如果没有足够的空间,那么在样板之前添加的内容应该将样板推到下一页,而这种情况并没有发生 .

1 回答

  • 0

    更新:在我自己尝试之后(我遇到了同样的问题),在底部元素之前添加一个不可见的元素和你想要的高度 . 如果隐形元素不适合,看起来由于底部元素而发生分页 . 奇迹般有效 . (提示我为两个元素添加了边框以进行测试,因此我能够确保布局正确)

相关问题