C# 在ColumnText中插入已解析的HTML
我一直在寻找在C# 在ColumnText中插入已解析的HTML,c#,itext,C#,Itext,我一直在寻找在ColumnText中插入解析HTML的解决方案,但没有找到任何解决方案 我的HTML文本如下所示: String text = '<p>Hello <strong>world</strong>!</p>'; PDF文件中的结果必须是: 你好世界 你有没有想过实现ConvertToHtmlForColumnText(String text)方法?一个方法ConvertToHtmlForColumnText(String text)返
ColumnText
中插入解析HTML的解决方案,但没有找到任何解决方案
我的HTML文本如下所示:
String text = '<p>Hello <strong>world</strong>!</p>';
PDF文件中的结果必须是:
你好世界
你有没有想过实现
ConvertToHtmlForColumnText(String text)
方法?一个方法ConvertToHtmlForColumnText(String text)
返回一个PdfContentByte
没有意义,毕竟这个方法只有字符串文本
可以使用,无PdfWriter
或PdfContentByte
另一方面,一个方法
ConvertToHtmlForColumnText(stringtext)
返回元素以稍后添加到ColumnText
,是有意义的,例如
List<IElement> ConvertToHtmlForColumnText(String text)
{
ListElementHandler listHandler = new ListElementHandler();
XMLWorkerHelper.GetInstance().ParseXHtml(listHandler, new StringReader(text));
return listHandler.List;
}
可以用于检索元素,这些元素以后可以像这样添加到ColumnText
String text = "<p>Hello <strong>world</strong>!</p>";
List<IElement> parsedText = ConvertToHtmlForColumnText(text);
using (Document document = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(result, FileMode.Create));
document.Open();
ColumnText ct = new ColumnText(writer.DirectContent);
ct.SetSimpleColumn(document.Left, document.Bottom, document.Right, document.Top);
ct.Add(parsedText);
ct.Go();
}
String text=“Helloworld!”;
List parsedText=ConvertToHtmlForColumnText(文本);
使用(文档=新文档(PageSize.A4))
{
PdfWriter writer=PdfWriter.GetInstance(文档,新文件流(结果,FileMode.Create));
document.Open();
ColumnText ct=新ColumnText(writer.DirectContent);
ct.SetSimpleColumn(document.Left,document.Bottom,document.Right,document.Top);
Add(parsedText);
ct.Go();
}
将此自定义扩展用于语法糖
public static class ColumnTextListExtension
{
public static void Add(this ColumnText ct, List<IElement> elements)
{
foreach (IElement e in elements)
{
ct.AddElement(e);
}
}
}
公共静态类ColumnTextListExtension
{
公共静态void Add(此列为文本ct,列出元素)
{
foreach(元素中的元素e)
{
ct.补充件(e);
}
}
}
导致
虽然解析HTML并将其绘制在
列文本中很容易,但返回PdfContentByte
的方法ConvertToHtmlForColumnText(字符串文本)
没有意义。如果仅基于HTML字符串
返回一个PdfContentByte
,ConvertToHtmlForColumnText
方法将解析HTML字符串并生成正确的对象,以插入ColumnText并在PDF中显示为富文本。“生成要插入到ColumnText中的正确对象“-这是可能的,但您希望它返回一个PdfContentByte
,而不是要在其上构造一个ColumnText
。不,我不需要PdfContentBye
对象。ConvertToHtmlForColumnText
返回的对象将是ColumnText()所需的正确类型。解决方案不能像我建议的那样简单?(只使用一种方法)。“不,我不需要PdfContentByte
对象。”-啊,好吧,然后我被PdfContentByte content=ConvertToHtmlForColumnText(text)误导了代码>问题中的行。“解决方案不能像我建议的那样简单(只使用一种方法)。”-是的,它可以,如果该方法可以返回列表,请参阅我的答案。谢谢@mkl,我将尝试您的解决方案。
String text = "<p>Hello <strong>world</strong>!</p>";
List<IElement> parsedText = ConvertToHtmlForColumnText(text);
using (Document document = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(result, FileMode.Create));
document.Open();
ColumnText ct = new ColumnText(writer.DirectContent);
ct.SetSimpleColumn(document.Left, document.Bottom, document.Right, document.Top);
ct.Add(parsedText);
ct.Go();
}
public static class ColumnTextListExtension
{
public static void Add(this ColumnText ct, List<IElement> elements)
{
foreach (IElement e in elements)
{
ct.AddElement(e);
}
}
}