2016-08-02 4 views
0

Я использую следующий код, чтобы добавить новую страницу в существующий документ. Он работает, но только что созданная страница копирует свойства старой страницы (верхний и нижний колонтитулы). Я хотел добавьте/добавьте новую страницу без верхнего и нижнего колонтитула в существующий документ. Пожалуйста, предложите что неправильно here.Is Есть ли способ, чтобы получить последнюю страницу и удалить колонтитулыДобавить новую страницу без заголовка OpenXML

Ниже код дает 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); 

ответ

0

Верхний и нижний колонтитулы связаны с разделами с использованием зависимостей, как это:

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

Так что для того, чтобы удалить верхний/нижний колонтитул из секции, одна потребность, чтобы удалить их из SectionProperties элемента. Для всех разделов, кроме последнего раздела, элемент SectionProperties сохраняется как дочерний элемент последнего абзаца раздела. В последнем разделе разделProperties хранится как дочерний элемент элемента body. Поэтому для того, чтобы добавить страницу без заголовка и нижнего колонтитула вам нужно:

  1. Создать новый пункт
  2. Получить последние свойства раздела из тела и вставить его в это клон нового пункта (выполнив: secProp.Clone (правда))
  3. Удалить последний раздел свойств из тела
  4. Добавить вновь созданный пункт Свода
  5. Добавить новый пункт с разрывом страницы к телу (новый пункт (новый Run (новый Break() {Type = BreakValues.Page })))
  6. Добавить новый пункт с новыми свойствами пустого раздела, как вы уже делали в вашем коде

Для получения дополнительной информации, смотрите здесь: http://officeopenxml.com/WPsection.php

+0

Спасибо Марко, я использовал свои шаги, но по-прежнему последний колонтитул/заголовок, как это .Я не получаю пустую последнюю страницу без заголовка/footer.Also Если я использую только свой первый код (новый абзац с новыми свойствами пустого поля), я получаю (используя инструмент производительности) одно свойство раздела w: sectPr под телом с нижним колонтитулом и заголовком reference.Another свойство раздела внутри последнего абзаца без ссылки нижнего колонтитула заголовка. Я не уверен, если нет нижнего колонтитула заголовка, почему последняя страница все еще показывает его – user32124