2017-12-11 19 views
1

を追加するとき、私はこのようなOpenXMLの持つ新しい段落を追加挿入:以下のようにのOpenXML:lastRenderedPageBreakは新しい段落

var pSpacerAfterSectorTitle = insertNodeSectorsArea.AppendChild(GetNewParagraph("Arial", 12, true, false, null)); 

方法は以下のとおりです。

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にも注意してください。

関連する問題