我有一门通过 MigraDoc 编写 PDF 文档的课程。
一个函数进行如下调用:
var p = row.Cells[1].AddParagraph();
p.AddLineBreak();
p.AddLineBreak();
_renderHtml(office["Address"], p.AddFormattedText());
_renderHtml 代码如下所示:
private void _renderHtml(string html, FormattedText text)
{
_renderHtmlElement(
new Html.Parsable("dom", html),
text
);
}
_renderHtmlElement 代码然后对实际处理的 HTML 进行一系列检查。我想我应该把它扔进一个开关盒,但这并没有真正影响我的问题。所以它看起来像这样:
private void _renderHtmlElement(Html.Element element, FormattedText text)
{
if ("p" == element.Type)
{
//do stuff
}
else if ("li" == element.Type)
{
//do stuff
}
else if ("b" == element.Type || "strong" == element.Type)
{
text = text.AddFormattedText(TextFormat.Bold);
}
else if ("i" == element.Type || "em" == element.Type)
{
text = text.AddFormattedText(TextFormat.Italic);
}
else if ("br" == element.Type || "em" == element.Type)
{
text.AddLineBreak();
}
else if ("text" == element.Type)
{
//do stuff
}
else if("sup" == element.Type)
{
FormattedText ft = text.AddFormattedText(element.ContentDecoded);
ft.Superscript = true;
}
foreach (var child in element.ChildElements)
{
_renderHtmlElement(child, text);
}
}
我的工作是让上标代码工作。我现在在其中的代码将添加正确的内容,格式为上标,但紧随其后的是原始内容(未上标)。的方法text
似乎只允许添加功能,我没有replace
或substring
类似的东西只是撕掉第二个实例。
我在这里忽略了一些明显的东西吗?正如您从粗体/斜体示例中看到的那样,这是一个相当简单的过程,所以我认为我只是没有正确传递 text.superscript 。
任何和所有的帮助将不胜感激。
干杯