【问题标题】:Add a new page without header and footer OpenXML添加没有页眉和页脚的新页面 OpenXML
【发布时间】:2021-06-18 17:01:38
【问题描述】:

我正在使用以下代码在现有文档中添加新页面。它正在工作,但新创建的页面复制了旧页面的属性(页眉和页脚)。我想添加/附加一个没有页眉和的新页面现有文档的页脚。 请建议这里有什么问题。有没有办法获取最后一页并删除页眉和页脚

下面的代码是给this xml

        Paragraph paragraph = new Paragraph();
        ParagraphProperties paragraphProperties = new ParagraphProperties();

        SectionProperties sectionProperties1 = new SectionProperties();

        SectionType sectionType1 = new SectionType() { Val = SectionMarkValues.NextPage };
        //sectionType1.Descendants<FooterReference>();

        sectionProperties1.Append(sectionType1);
        paragraphProperties.Append(sectionProperties1);

        paragraph.Append(paragraphProperties);
        mainPart.Document.Body.InsertAfter(paragraph, mainPart.Document.Body.LastChild);

【问题讨论】:

    标签: c# ms-word openxml word-addins


    【解决方案1】:

    页眉和页脚使用关系与部分连接,如下所示:

    <w:sectPr>
    . . .
    <w:footerReference r:id="rId10" w:type="default"/>
    . . .
    </w:sectPr>
    

    因此,为了从部分中删除页眉/页脚,需要从 SectionProperties 元素中删除它们。对于除最后一节之外的所有节,SectionProperties 元素存储为该节中最后一段的子元素。对于最后一个部分,SectionProperties 存储为 body 元素的子元素。因此,要添加没有页眉和页脚的页面,您需要:

    1. 创建新段落
    2. 从正文中获取最后一节属性并将其克隆插入新段落(通过执行:secProp.Clone(true))
    3. 从正文中删除最后一节的属性
    4. 将新创建的段落添加到正文中
    5. 在正文中添加带有分页符的新段落 (new Paragraph(new Run(new Break(){ Type = BreakValues.Page })))
    6. 像您在代码中所做的那样,使用新的空白部分属性添加新段落

    欲了解更多信息,请参阅此处:http://officeopenxml.com/WPsection.php

    【讨论】:

    • 谢谢马尔科,我使用了你的步骤,但最后一页页脚/页眉仍然是原样。我没有得到没有页眉/页脚的空最后一页。另外,如果我只使用我的第一个代码(新具有新的空部分属性的段落)我得到(使用生产力工具)一个部分属性 w:sectPr 在正文下,带有页脚和页眉参考。最后一段内的另一个部分属性没有页眉页脚参考。我不确定是否没有页眉页脚为什么最后一页还在显示它
    【解决方案2】:

    我知道这是一个非常古老的问题,但仍未解决,也许其他人正在寻找答案。 其原因是如果它不是文档中的第一节,Word 会自动将页眉和页脚设置为“取自上一个”。即使没有设置页眉和页脚。

    查看 headerreference 类的文档 (https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.wordprocessing.headerreference):

    如果给定部分省略了任何类型的标题,则应适用以下规则。

    • 如果没有指定第一页标题的 headerReference 并且指定了 titlePg 元素,则应从前一节继承第一页标题,或者,如果这是文档中的第一节,则应为新的空白页眉创建的。如果未指定 titlePg 元素,则不显示首页页眉,应使用奇数页页眉代替。
    • 如果没有指定偶数页标题的 headerReference 并且指定了 evenAndOddHeaders 元素,则偶数页标题应从前一节继承,或者,如果这是文档中的第一节,则应为新的空白页眉创建的。如果未指定 evenAndOddHeaders 元素,则不显示偶数页眉,而应使用奇数页眉代替。
    • 如果没有为奇数页标题指定 headerReference,则应从前一节继承偶数页标题,或者,如果这是文档中的第一部分,则应创建一个新的空白页眉。

    这就是为什么页眉和页脚仍然显示在最后一页的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2021-03-22
      • 2010-12-03
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多