У меня есть класс для написания PDF-документа через MigraDoc.
Функция делает такой вызов:
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.
Любая помощь будет принята с благодарностью.
Ваше здоровье