itextsharp html到pdf不显示base64图像

时间:2015-07-15 17:32:20

标签: html image pdf base64 itextsharp

我正在使用iTextSharp v.5.5.6将HTML转换为PDF。 HTML没有img标签就可以很好地转换为PDF,但有时HTML包含带有Base64数据作为源的img标签,这些标签不会出现在PDF上。

以下是使用Base64 img标记的HTML示例:

<td>
<center>
    <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."></img>
</center>
</td>

使用在线解码器正确解码Base64数据。

以下是我用来呈现PDF的代码:

using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
using iTextSharp.tool.xml;

protected void BuildPdf(string html, string example_css, string stocknumber, string makemodel)
    {
        Byte[] bytes;

        using (var ms = new MemoryStream())
        {
            using (var doc = new Document())
            {
                using (var writer = PdfWriter.GetInstance(doc, ms))
                {
                    doc.Open();

                    using (var msCss = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(example_css)))
                    {
                        using (var msHtml = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)))
                        {
                            iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msHtml, msCss);
                        }
                    }
                    doc.Close();
                }
            }
            bytes = ms.ToArray();
        }

        Response.Clear();
        MemoryStream msi = new MemoryStream(bytes);
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=" + stocknumber + " - " + makemodel + ".pdf");
        Response.Buffer = true;
        msi.WriteTo(Response.OutputStream);
        Response.End(); 
    }

有人可以告诉我如何让iTextSharp在PDF中包含Base64图像吗?我可以使用javascript在前端使用img标签或将其传递给代码隐藏,并使用C#在后端操作它。

0 个答案:

没有答案