У меня есть класс для написания 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.
Любая помощь будет принята с благодарностью.
Приветствия