【问题标题】:Page number resets when new section starts - MigraDoc新部分开始时页码重置 - MigraDoc
【发布时间】:2015-05-13 00:47:38
【问题描述】:

我正在使用 MigraDoc 创建 PDF。根据我的要求,我必须根据 page\section 的内容添加不同的标题。我可以通过添加新部分并为每个部分定义新标题来实现它。到这里为止,一切正常。
在页脚中,我使用“AddPageField”显示页码。但我意识到,每当一个新部分开始时,页面字段都会重置为 1。页脚有什么方法可以继续所有部分的页数吗?
如果我在整个文档中只使用一个部分,那么页码将继续。但在这种情况下,我不能使用不同的标题。

【问题讨论】:

  • 我更新了我的答案。我花了很长时间才明白发生了什么,但最终我找到了您问题的答案。

标签: pdfsharp migradoc


【解决方案1】:

这似乎是 MigraDoc 1.50 beta 1 之前的一个错误。

这个错误还没有修复,但它应该只需要一个小的修改,我希望它会在下一个版本中得到纠正。

我不得不改变主意:这不是错误,而是一项功能。

要实现 OP 的要求,您必须将 PageSetup 分配给设置 StartingNumber 的第一部分,并将 PageSetup 分配给未设置 StartingNumber 的第二部分。

如果没有为第二部分设置PageSetup,则该部分将继承第一部分的PageSetup,并且起始编号将应用于这两个部分。如果每个部分是例如,这是所需的行为。连载信。

这是我的测试代码(只是一个代码 sn-p):

var sec1 = document.LastSection; 
sec1.PageSetup = document.DefaultPageSetup.Clone(); 
sec1.PageSetup.StartingNumber = 17; 

sec1.Footers.Primary = new HeaderFooter(); 
var para = sec1.Footers.Primary.AddParagraph(); 
para.AddPageField(); 

var sec2 = document.AddSection(); 
sec2.PageSetup = document.DefaultPageSetup.Clone(); 

第二部分从第一部分继承页脚,但新的 PageSetup 会覆盖 StartingNumber。

Clone() 在这里很方便。

【讨论】:

    猜你喜欢
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多