2012-05-21 64 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