私はMigraDoc経由でPDF文書を書くためのクラスを持っています。MigraDocの上付き文字
private void _renderHtml(string html, FormattedText text)
{
_renderHtmlElement(
new Html.Parsable("dom", html),
text
);
}
_renderHtmlElementコードはその後、HTMLを実際に処理する何のために一連のチェックを行います。
var p = row.Cells[1].AddParagraph();
p.AddLineBreak();
p.AddLineBreak();
_renderHtml(office["Address"], p.AddFormattedText());
_renderHtmlコードは次のようになります。
機能は、このような呼び出しを行います。私はそれをスイッチのケースに投げ入れるべきだと思っていますが、それは本当に私の質問に影響しません。だから、これは次のようになります:
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
など、2番目のインスタンスを破棄するのに似たものはありません。
私はここで何かを見落としていますか?太字/斜体の例から分かるように、それはかなり単純な処理です。だから、私はtext.superscriptを適切に渡していないと思うでしょう。
すべてのご協力をいただければ幸いです。あなたは上付きのテキストを追加
乾杯
あなたのHTMLクラスはどのように見えますか? – Timsen