3

我一直在使用 ITextSharp 并使用它来生成 PDF - 但是我最近遇到了一个问题,即第一个页面之外的所有页面的上边距似乎都被忽略了,因此我的标题上发生了写入。

当前利润:

document.SetMargins(72,72, 36, 36);

应该注意的是,左边距和右边距在第一页之外完美地工作 - 但是它似乎忽略了顶部边距并在页面顶部(标题出现的地方)开始文本。

有没有人知道为什么会发生这种情况?或者是否有一个区域或事件可以用来加强每一页的文档页边距?(也许是OnStartPage事件?)

如果需要,我很乐意提供任何额外的代码——因为我知道 ITextSharp 在代码方面可能会变得非常复杂。

4

2 回答 2

3

如果你想要不同的页边距,我钩住了 OnPageStart 事件并根据页码设置页边距。

internal class DocumentEvents : PdfPageEventHelper
{
    /// <summary>
    /// Called when [start page].
    /// </summary>
    /// <param name="writer">The writer.</param>
    /// <param name="document">The document.</param>
    public override void OnStartPage(PdfWriter writer, Document document)
    {
        if (document.PageNumber == 1)
        {
            document.SetMargins(40f, 40f, 130f, 20f);
        }
        else
        {
            document.SetMargins(40f, 40f, 30f, 30f);
        }

        document.NewPage();
    }
}

不要忘记将您的事件连接到文档编写器:

this.writer.PageEvent = new DocumentEvents();
于 2013-10-22T14:22:49.847 回答
2

根据 Alexis Pigeon 将页眉和页脚包含在OnEndPage事件中的指示解决了该问题,而不是将它们中的每一个都放在单独的事件中。我还调整了边距(增加底部边距)以防止覆盖。

于 2012-06-22T13:54:10.987 回答