首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenXML保留断线上的格式(问题)

OpenXML保留断线上的格式(问题)
EN

Stack Overflow用户
提问于 2011-06-02 16:54:15
回答 1查看 2.1K关注 0票数 1

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

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

代码语言:javascript
复制
    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中显示字体、大小等。最大的问题是,当我在同一个Bookmark中发送不同的字符串时,我需要留行空格。我发送了一个空字符串,或者像“”这样的空格,结果是一个空行,但字体(TimesNewRoman)和大小(12)不同。对我来说,保留空行中的字体大小真的很重要…

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-08 20:07:58

如果我正确理解了你的问题,你想要的只是一个空白行,那么你所要做的就是插入一个空白段落,它应该遵循你已经设置的默认字体。这将需要你将你的文本分成两个不同的段落,使用两个不同的运行来工作:

代码语言:javascript
复制
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());
             }
         }
     }
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6212379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档