public string GetPDF(string pHTML)
{
byte[] pdf; // result will be here
var cssText = System.IO.File.ReadAllText(HttpContext.Server.MapPath("~/Content/bootstrap.css"));
cssText=cssText + System.IO.File.ReadAllText(HttpContext.Server.MapPath("~/Content/styles.css"));
var html = pHTML;
using (var memoryStream = new MemoryStream())
{
var document = new Document(PageSize.A4, 15, 15, 15, 15);
var writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();
using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
{
using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream);
}
}
document.Close();
pdf = memoryStream.ToArray();
}
var temp = Convert.ToBase64String(pdf);
return temp;
}
I pass the html string from razor view to controller but image tag closing error shown when XMLWorkerHelper try to parse and if i direcly pass image tag string from code behind then no image shown
XMLWorkerHelper. Please also show these data, in particular those parts responsible for the image in question.FileStreambut that cannot keep you from using aMemoryStreamlike you do in your code, can it?