OpenXML сохраняет форматы на линиях разрыва (проблемы)

У меня серьезные проблемы с перерывами в генерации документа 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 указывается шрифт, размер и т. д. Самая большая проблема заключается в том, что я отправляю разные строки в одну и ту же закладку, и мне нужно оставить пробел. Я отправляю пустую строку или пробел типа " ", и в результате получается пустая строка, но с другим шрифтом (TimesNewRoman) и размером (12). Для меня очень важно сохранить размер шрифта в этих пустых строках...

Какая-то идея?


person Displaying    schedule 02.06.2011    source источник
comment
почему я не могу этого сделать?: Run run2 = new Run(new RunProperties(_rProp)); когда я запускаю код, он говорит, что элемент из дерева... На данный момент я создаю другую функцию InsertBlank (string _BkMk, RunProperties _rProp), где я делаю этот новый Break с нужными мне свойствами запуска (здесь я могу это сделать )   -  person Displaying    schedule 02.06.2011
comment
Пожалуйста, отредактируйте свой вопрос вместо того, чтобы оставлять комментарии с важной информацией.   -  person Lasse V. Karlsen    schedule 02.06.2011


Ответы (1)


Если я правильно понял ваш вопрос, и все, что вам нужно, это пустая строка, тогда все, что вам нужно сделать, это вставить пустой абзац, и он должен следовать установленному вами шрифту по умолчанию. Это потребует от вас разделить текст на два разных абзаца с двумя разными прогонами, чтобы работать:

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 создаст пустой абзац, когда вы нажмете клавишу ввода.

person amurra    schedule 08.06.2011