2012-05-21 5 views
0

페이지 단위로 루프를 수행하려면 어떻게해야합니까? 헤더, 꼬리말 및 워터 마크를 사용하지 않고 모든 페이지의 상단 및 하단에 요소를 설정해야합니다. 코드를 사용하지만 모든 문서에서 작동하지 않습니다. 그런페이지 단위로 반복하는 OpenXML 워드 프로세싱

public void AddLabel() 
{ 
    IEnumerable<Paragraph> topP = wdDoc.MainDocumentPart.Document.Body.Elements<Paragraph>(); 
    bool skip = false; 
    foreach (Paragraph p in topP) 
    { 
     if (!ContainLastRenderedPageBreak(p)) 
     { 
     if (!skip) 
     { 
      p.Append(runElementFooter.CloneNode(true)); 
      p.Append(runElementHeader.CloneNode(true)); 
      skip = true; 
     } 
     } 
     else skip = false; 
     if (ContainPageBreak(p)) 
     { 
     p.Append(runElementFooter.CloneNode(true)); 
     p.Append(runElementHeader.CloneNode(true)); 
     skip = false; 
     } 
    } 
} 
public bool ContainPageBreak(Paragraph p) 
{ 
return p.Elements<Run>().FirstOrDefault(r => r.Elements<Break>().FirstOrDefault(b => b.Type == BreakValues.Page) != null) != null; 
} 
public bool ContainLastRenderedPageBreak(Paragraph p) 
{ 
return p.Elements<Run>().FirstOrDefault(r => r.Elements<LastRenderedPageBreak>().FirstOrDefault() != null) != null; 
} 

답변

0

뭔가 (즉 LastRenderedPageBreak에 의존는), 페이지는 텍스트의 단락을 포함하는 경우 충분히 쉬운 페이지 레이아웃 모델 (건물의 짧은 당신이 할 것이다 최고입니다, 더 일반적으로 더 열심히 케이스).

+0

레이아웃이 다른 모든 문서의 경우 어떻게해야합니까? – Alexey