2017-12-11 3 views
1

를 추가 할 때이 같은 OpenXML과 함께 새로운 단락을 추가 삽입의 OpenXML :</p> <pre><code>var pSpacerAfterSectorTitle = insertNodeSectorsArea.AppendChild(GetNewParagraph("Arial", 12, true, false, null)); </code></pre> <p>방법은 다음과 같다 : lastRenderedPageBreak 새로운 단락

private static Paragraph GetNewParagraph(string fontName, int fontSize, bool useBold, bool useUnderline, string text) 
{ 
    var p = new Paragraph(); 
    var pPr = p.AppendChild(new ParagraphProperties()); 
    var rPrP = pPr.AppendChild(GetNewRunProperties(fontName, fontSize, useBold, useUnderline)); 
    var r = p.AppendChild(new Run()); 
    var rPr = r.AppendChild(GetNewRunProperties(fontName, fontSize, useBold, useUnderline)); 
    if (!string.IsNullOrEmpty(text)) 
    { 
     r.AppendChild(new Text() { Text = text, 
      Space = SpaceProcessingModeValues.Preserve }); 
    } 
    return p; 
    } 
} 

및 ...

private static RunProperties GetNewRunProperties(string fontName, int fontSize, bool useBold, bool useUnderline) 
    { 
     string fontSizeVal = (fontSize * 2).ToString(); 

     var runPr = new RunProperties(); 
     runPr.AppendChild(new RunFonts() { ComplexScript = fontName }); 
     if (useBold) 
     { 
      runPr.AppendChild(new Bold()); 
     } 
     runPr.AppendChild(new FontSize() { Val = fontSizeVal }); 
     runPr.AppendChild(new FontSizeComplexScript() { Val = fontSizeVal }); 
     if (useUnderline) 
     { 
      runPr.AppendChild(new Underline() { Val = UnderlineValues.Single }); 
     } 
     runPr.AppendChild(new Languages() { EastAsia = "de-CH" }); 

     return runPr; 
    } 

단락이 이렇게 추가되면 갑자기 첫 페이지에 lastRenderedPageBreak을 얻을 것입니다. 어딘가에 whe와 관련이 없습니다. 나는 내 견해로 단락을 삽입한다.

...<w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr><w:lastRenderedPageBreak/><w:t>Sitzung 20171207 PSC 1</w:t></w:r></w:p> 

나는 단락의 추가를 주석 처리하면 생성 된 문서는이 페이지 나누기를 포함하지 않는 : 내 코드를 여러 번 확인했지만 아무 곳에 나 수동으로 같은 lastRenderedPageBreak을 만들 수 없습니다

...<w:b/><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr><w:t>Sitzung 20171207 PSC 1</w:t></w:r></w:p> 

- 그래서 현재 그것이 어디에서 왔는지 전혀 모른다.

아이디어가 있으십니까?

답변

1

OOXML에서 w:lastRenderedPageBreak은 페이지 매김 계산 결과를 표시하기 위해 페이지 번호 매기기를 한 마지막 소프트웨어에 의해 삽입됩니다.

질문에 직접 대답하기 위해 w:lastRenderedPageBreak이 자신의 코드가 아닌 등 뒤에 삽입됩니다.

이 동작을 피하기 위해 페이지 매김을하지 않는 라이브러리를 통해 MS Word에서 OOXML을 조작 할 수 있지만 다음에 문서가 렌더링 될 때 w:lastRenderedPageBreak 요소가 나중에 삽입 될 수 있다는 점에 유의해야합니다.

불행히도 w:lastRenderedPageBreak is quite unreliable in marking pagination accurately에 유의하십시오.

관련 문제