我有一个正在生成的MigraDoc pdf,并且需要有一些“内联”表,我需要在一行上获得两个表,因此在调查之后,我发现TextFrames可以正常工作...直到遇到末尾页面。原来TextFrames无法识别页面的结尾:
所以,我想知道是否还有其他人为此提出建议?
我曾想过,如果我可以找到“当前位置”的位置,我可以计算文本框是否太高,然后手动插入分页符-但我似乎找不到“当前位置” -可能是因为直到发布后才存在?
在编码时是否有任何方法可以获取“当前行”的渲染高度位置?还是有一种更好/更轻松的方式来完成我所寻找的工作?
答案 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知道那里发生了什么?!