ItextSharp PDF转换

时间:2017-09-06 13:00:44

标签: itext

我在带有输出

的html编辑器中创建了表格
<table style="width: 100%;">
    <tbody>
        <tr>
            <td style="width: 50.0000%;"><a href="http://www.google.com">sdfsdf</a><br></td>
            <td style="width: 50.0000%;"><br></td>
        </tr>
        <tr>
            <td style="width: 50.0000%;"><br></td>
            <td style="width: 50.0000%;"><br></td>
        </tr>
    </tbody>
</table>

使用Itextsharp html进行PDF转换如下

private List<IElement> GetXHtmlElementList(string html)
    {
       if (!string.IsNullOrEmpty(html) && html.Contains("<img"))
       {
          html = html.Replace("<img", "<br/><img");
       }
        List<IElement> list = new List<IElement>();
        Dictionary<string, object> interfaceProps = new Dictionary<string, object>() {
            {"img_provider", new CustomItextImageProvider()}
        };
        if (html != null)
        {
            var encodedHTML = HttpUtility.HtmlEncode(html);
            if(encodedHTML != null)
                using (StringReader sr = new StringReader(HttpUtility.HtmlDecode(encodedHTML)))
                {
                    list = ParseToList(sr, null, interfaceProps);
                }
        }
        return list;
    }

但是我得到了以下错误 在ParseToList中

  

{“无法将'iTextSharp.text.html.simpleparser.CellWrapper'类型的对象强制转换为'iTextSharp.text.Paragraph'。”}

我可能需要考虑切换其他选项,如果这不起作用,到目前为止我还没有找到任何解决方案。

1 个答案:

答案 0 :(得分:1)

如果您习惯使用iText,请考虑使用pdfHTML。它是一个iText7附加组件,提供从HTML到PDF的转换,其方式远远优于XMLWorker。

小代码示例:

    // IO
    String htmlSource = "<p>Lorem Ipsum Dolor Sit Amet</p>";
    File pdfDest = getOutputFile();

    // pdfHTML specific code
    ConverterProperties converterProperties = new ConverterProperties();
    HtmlConverter.convertToPdf(
        new FileInputStream(htmlSource), 
        new FileOutputStream(pdfDest), 
        converterProperties);

https://itextpdf.com/itext7/pdfHTML

了解详情