Migradoc TextFrame分页符-获取当前页面位置

时间:2019-05-02 10:47:40

标签: c# page-break migradoc

我有一个正在生成的MigraDoc pdf,并且需要有一些“内联”表,我需要在一行上获得两个表,因此在调查之后,我发现TextFrames可以正常工作...直到遇到末尾页面。原来TextFrames无法识别页面的结尾:

enter image description here (TextFrame是红色框)

所以,我想知道是否还有其他人为此提出建议?

我曾想过,如果我可以找到“当前位置”的位置,我可以计算文本框是否太高,然后手动插入分页符-但我似乎找不到“当前位置” -可能是因为直到发布后才存在?

在编码时是否有任何方法可以获取“当前行”的渲染高度位置?还是有一种更好/更轻松的方式来完成我所寻找的工作?

2 个答案:

答案 0 :(得分:0)

在呈现文档之前“准备”文档时确定对象位置。如果在此阶段进行更改,则必须再次准备文档。

您可以创建带有“不可见”单元格的表。您可以在表格中创建表格,但是内部表格中没有分页符,因此请确保每个嵌套表格都适合单个页面。
另请参阅:
https://stackoverflow.com/a/36304148/162529

答案 1 :(得分:0)

我发现了一段代码,它使用一种预渲染来返回当前位置:

    public double GetMigraHeightPosition()
    {
        MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(this.document);
        docRenderer.PrepareDocument();

        RenderInfo[] RenderInfos = docRenderer.GetRenderInfoFromPage(docRenderer.FormattedDocument.PageCount);
        RenderInfo r = RenderInfos[RenderInfos.Count() - 1];
        return r.LayoutInfo.ContentArea.Y + r.LayoutInfo.ContentArea.Height;
    }

所以我用这个加表的高度来检查它是否大于活动页面的大小(页面大小减去边距和页眉/页脚)。似乎在阻止表格溢出到页脚中就可以解决问题了……第一行中的第二张表转到下一页似乎仍然存在问题……? Havent知道那里发生了什么?!