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
は、関数の追加のみが許可されているようです。2番目のインスタンスを切り離すだけの方法はありreplace
ません。substring
私はここで明白な何かを見落としていますか?太字/斜体の例からわかるように、これはかなり単純なプロセスであるため、text.superscriptを適切に渡していないと思います。
ありとあらゆる助けをいただければ幸いです。
乾杯