是否可以使用iTextSharp在句子中加粗单个单词?我正在处理来自xml的大段文本,我试图加粗几个单词,而不必将字符串分成单个短语。
例如:
document.Add(new Paragraph("this is <b>bold</b> text"));
应输出......
这是粗体文字
答案 0 :(得分:2)
不确定您的Xml有多复杂,但请尝试XMLWorker。这是一个使用ASP.NET HTTP处理程序的工作示例:
<%@ WebHandler Language="C#" Class="boldText" %>
using System;
using System.IO;
using System.Web;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.xml;
using iTextSharp.tool.xml;
public class boldText : IHttpHandler {
public void ProcessRequest (HttpContext context) {
HttpResponse Response = context.Response;
Response.ContentType = "application/pdf";
StringReader xmlSnippet = new StringReader(
"<p>This is <b>bold</b> text</p>"
);
using (Document document = new Document()) {
PdfWriter writer = PdfWriter.GetInstance(
document, Response.OutputStream
);
document.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(
writer, document, xmlSnippet
);
}
}
public bool IsReusable { get { return false; } }
}
您可能需要在将Xml发送到XMLWorker之前对其进行预处理。 (请注意该片段与您的片段略有不同)最近发布了解析HTML / Xml的支持,因此您的里程可能会有所不同。
答案 1 :(得分:2)
我知道这是一个古老的问题,但我无法在这里找到适合我的其他例子。但是在Chucks中添加不同字体的文本就可以了。
//define a bold font to be used
Font boldFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 12);
//add a phrase and add Chucks to it
var phrase2 = new Phrase();
phrase2.Add(new Chunk("this is "));
phrase2.Add(new Chunk("bold", boldFont));
phrase2.Add(new Chunk(" text"));
document.Add(phrase2);
答案 2 :(得分:0)
这是另一个使用ParseHtml的不同重载并返回一个Phrase而不是直接将其写入文档的XMLWorker示例。
private static Phrase CreateSimpleHtmlParagraph(String text)
{
var p = new Phrase();
var mh = new MyElementHandler();
using (TextReader sr = new StringReader("<html><body><p>" + text + "</p></body></html>"))
{
XMLWorkerHelper.GetInstance().ParseXHtml(mh, sr);
}
foreach (var element in mh.elements)
{
foreach (var chunk in element.Chunks)
{
p.Add(chunk);
}
}
return p;
}
private class MyElementHandler : IElementHandler
{
public List<IElement> elements = new List<IElement>();
public void Add(IWritable w)
{
if (w is iTextSharp.tool.xml.pipeline.WritableElement)
{
elements.AddRange(((iTextSharp.tool.xml.pipeline.WritableElement)w).Elements());
}
}
}