我在带有输出
的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'。”}
我可能需要考虑切换其他选项,如果这不起作用,到目前为止我还没有找到任何解决方案。
答案 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);
了解详情