在iTextSharp中使用富文本值进行粗体扩展

Jus*_*oof 4 itextsharp

是否可以使用iTextSharp在句子中加粗单个单词?我正在处理来自xml的大段文本,我试图加粗几个单词,而不必将字符串分成单个短语.

例如:

document.Add(new Paragraph("this is <b>bold</b> text"));
Run Code Online (Sandbox Code Playgroud)

应该输出......

这是粗体文字

Chr*_*aas 6

正如@kuujinbo指出的那样,XMLWorker对象是大多数新的HTML解析工作正在进行的对象.但是,如果您只是使用粗体或斜体等简单命令,则可以使用本机iTextSharp.text.html.simpleparser.HTMLWorker类.您可以将其包装到辅助方法中,例如:

private Paragraph CreateSimpleHtmlParagraph(String text) {
    //Our return object
    Paragraph p = new Paragraph();

    //ParseToList requires a StreamReader instead of just text
    using (StringReader sr = new StringReader(text)) {
        //Parse and get a collection of elements
        List<IElement> elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, null);
        foreach (IElement e in elements) {
            //Add those elements to the paragraph
            p.Add(e);
        }
    }
    //Return the paragraph
    return p;
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

document.Add(new Paragraph("this is <b>bold</b> text"));
Run Code Online (Sandbox Code Playgroud)

你可以用这个:

document.Add(CreateSimpleHtmlParagraph("this is <b>bold</b> text"));
document.Add(CreateSimpleHtmlParagraph("this is <i>italic</i> text"));
document.Add(CreateSimpleHtmlParagraph("this is <b><i>bold and italic</i></b> text"));
Run Code Online (Sandbox Code Playgroud)