2013-06-13 1 views
0

Есть ли способ применить затенение к части (например, только слово) из Paragraph в PdfSharp/MigraDoc? Я попытался добавить Style с затенением на Document, а затем передать имя стиля методу AddFormattedText, но он берет только информацию о шрифте из стиля.PdfSharp/MigraDoc - как затенять часть абзаца

Спасибо,

ответ

1

Я использую PdfSharp/MigraDoc из нескольких недель и перед тем, как ответить именно на ваш вопрос, я прочитал его исходный код, свободно предоставляемый.

Короткий ответ: НЕВОЗМОЖНО

долго ответ: Единственная часть по стилю рассмотренном AddFormattedText(string text, string style) является частью характера. Тогда Shading, который является частью ParagraphFormat, не может быть применен и визуализирован PdfSharp/MigraDoc.

Кодируемое Ответ:

public FormattedText AddFormattedText(string text, string style) 
    { 
     FormattedText formattedText = AddFormattedText(text); 
     formattedText.Style = style; 
     return formattedText; 
    } 



internal class FormattedTextRenderer : RendererBase 
    ... 
/// <summary> 
    /// Renders the style if it is a character style and the font of the formatted text. 
    /// </summary> 
    void RenderStyleAndFont() 
    { 
     bool hasCharacterStyle = false; 
     if (!this.formattedText.IsNull("Style")) 
     { 
     Style style = this.formattedText.Document.Styles[this.formattedText.Style]; 
     if (style != null && style.Type == StyleType.Character) 
      hasCharacterStyle = true; 
     } 
     object font = GetValueAsIntended("Font"); 
     if (font != null) 
     { 
     if (hasCharacterStyle) 
      this.rtfWriter.WriteControlWithStar("cs", this.docRenderer.GetStyleIndex(this.formattedText.Style)); 

     RendererFactory.CreateRenderer(this.formattedText.Font, this.docRenderer).Render(); 
     } 
    } 

Я надеюсь, что это может помочь вам. Davide.

1

Вы можете попытаться загрузить ваш стиль абзаца, как это:

paragraph = section.AddParagraph();  
paragraph.Style = "StyleName"; 

Лично я не использовал функцию затенения, но это так, как я загружаю свои стили, и это работает ОК.

+0

Это добавляет новый абзац. Я ищу способ изменить затенение для части абзаца, а не всего абзаца. – theburningmonk

+0

Решили проблему? Вы можете просто использовать обходной путь и попытаться создать новый абзац, содержащий одно слово или просто «ваш раздел», а затем соответствующим образом вписать новый абзац. – f1v3