OpenXML在换行线上保留格式(问题)

本文关键字:格式 问题 保留 换行 OpenXML | 更新日期: 2023-09-27 17:58:25

我在生成Word文档时遇到了严重的中断问题。

这是我在BookMark:中用于发送文本的库函数

    public void sentText(string _BkMk, string _text, bool _break, RunProperties _rProp)
    {  
            Text text = new Text(_text) { Space = SpaceProcessingModeValues.Preserve };
            Run run = new Run(new RunProperties(_rProp));   
            run.Append(text);
            Run run2 = new Run();               
            if (_break)
            {                  
               run2.Append(new Break());
               //CarriageReturn cr = new CarriageReturn();
               //run2.Append(cr);                   
            }
            foreach (BookmarkStart bookmarkStart in bookmarkMap.Values)
            {
                if (bookmarkStart.Name.Value == _BkMk)
                {
                    bookmarkStart.InsertBeforeSelf(run);
                    if (_break)
                    {
                        bookmarkStart.InsertBeforeSelf(run2);
                    }
                }
            }

在runProperties中,cames显示字体、大小等。。。最大的问题是当我在同一个书签中发送不同的字符串时,我需要留出一行空间。我发送了一个空字符串,或者像"这样的空格,结果是一个空行,但字体(TimesNewRoman)和大小(12)不同。对我来说,保留空行中的字体大小真的很重要。。。

有什么想法吗?

OpenXML在换行线上保留格式(问题)

如果我正确理解你的问题,而你只需要一行空白,那么你所要做的就是插入一个空白段落,它应该遵循你设置的默认字体。这将要求您将文本拆分为两个不同的段落,并进行两次不同的运行:

public void sentText(string _BkMk, string _text, bool _break, RunProperties _rProp)
{  
     Text text = new Text(_text) { Space = SpaceProcessingModeValues.Preserve };
     Run run = new Run(new RunProperties(_rProp));          
     run.Append(text);                    
     Paragraph paragraph1 = new Paragraph();
     paragraph1.Append(run);
     foreach (BookmarkStart bookmarkStart in bookmarkMap.Values)
     {
         if (bookmarkStart.Name.Value == _BkMk)
         {
             bookmarkStart.InsertBeforeSelf(paragraph1);
             if (_break)
             {
                 bookmarkStart.InsertBeforeSelf(paragraph1);
                 bookmarkStart.InsertBeforeSelf(new Paragraph());
             }
         }
     }
}

我还建议使用段落,而不是只运行,因为当你按下回车键时,Word会创建一个空段落。