Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ColumnText中插入已解析的HTML_C#_Itext - Fatal编程技术网

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);
        }
    }
}