Форматы сохранения OpenXML на линиях разрыва (проблемы) - PullRequest
0 голосов
/ 02 июня 2011

У меня серьезные проблемы с перерывами в создании документов 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). Для меня действительно важно сохранить размер шрифта в этих пустых строках ...

Есть идеи?

1 Ответ

1 голос
/ 08 июня 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...