【问题标题】:PdfSharp/MigraDoc - how to shade part of a paragraphPdfSharp/MigraDoc - 如何对段落的一部分进行着色
【发布时间】:2013-06-09 06:50:06
【问题描述】:

有没有办法在 PdfSharp/MigraDoc 中对 Paragraph 的部分(例如,只是一个词)应用阴影?我尝试将带有阴影的Style 添加到Document,然后将样式名称传递给AddFormattedText 方法,但它只从样式中获取字体信息。

谢谢,

【问题讨论】:

    标签: c# .net pdf 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();
          }
        }
    

    我希望这可以帮助你。 大卫。

    【讨论】:

      【解决方案2】:

      您可以尝试像这样将样式加载到段落中:

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

      我个人没有使用阴影功能,但这是我加载样式的方式,它工作正常。

      【讨论】:

      • 这增加了一个新段落。我正在寻找一种方法来更改段落的一部分而不是整个段落本身的阴影。
      • 问题解决了吗?您可以使用一种解决方法并尝试创建一个包含单个单词或仅包含“您的部分”的新段落,然后相应地设置新段落的样式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多