从PDF

时间:2016-06-02 16:29:29

标签: c# pdf pdf-generation pdfsharp migradoc

我们正在使用Migradoc生成包含标题部分的PDF,以便在每个页面上显示标题。

标题中内容的高度可能会有所不同。我使用document.DefaultPageSetup.TopMargin设置了正文内容的位置。但是,目前这是一个固定的最佳猜测'值。有时内容会更大,导致重叠。

我需要一种方法来计算标题的高度,以便我可以适当地设置document.DefaultPageSetup.TopMargin值。

我为此假设,我将不得不两次通过 - 例如。生成PDF,检查渲染的标题高度,然后再次生成PDF,设置document.DefaultPageSetup.TopMargin

一旦我第一次渲染PDF,我就无法看到检查标题高度的方法。我注意到GetRenderInfoFromPage()中有一个名为DocumentRenderer的方法。这看起来像我想要的,除了它似乎不包括标题数据。如果在第一代PDF生成中,我只是在第一页上呈现标题而没有内容,那么GetRenderInfoFromPage(1)将返回一个空数组。如果我在除1之外的任何其他页面上调用它,它将返回null

我们还使用PdfSharp作为最后一行来添加水印。因此,如果我可以使用此查询标题高度,这可能也有用吗?我找不到这样做的方法。

是否有人知道是否可以查询呈现的标题高度?

1 个答案:

答案 0 :(得分:1)

我使用我在问题中提到的方法工作,除了第一遍,我将标题内容渲染到正文而不是标题区域。这意味着DocumentRenderer.GetRenderInfoFromPage()然后起作用。此过程仅用于计算标题内容高度。然后对于第二遍,它像往常一样将标题内容呈现到标题中。