有没有办法在PdfSharp / MigraDoc中对Paragraph
的部分(例如,只是一个单词)应用着色?我尝试将带有着色的Style
添加到Document
,然后将样式名称传递给AddFormattedText
方法,但它只获取样式中的字体信息。
谢谢,
答案 0 :(得分:1)
您可以尝试将样式加载到段落中,如下所示:
paragraph = section.AddParagraph();
paragraph.Style = "StyleName";
就我个人而言,我没有使用着色功能,但这就是我加载样式的方式,它运行正常。
答案 1 :(得分:1)
我正在使用PdfSharp / MigraDoc几个星期,在回答你的问题之前我已经阅读了它的源代码,这是自由不可思议的。
简短的回答是:不可能
长答案是:
AddFormattedText(string text, string style)
考虑的Style的唯一部分是Character部分。然后,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。