XMLWorker:找到无效的嵌套标记div,预计结束标记img
问题描述:
我只是想使用XMLWorker将图像添加到我的PDF文档中。但由于某种原因,它想要一个密切的img标签。但即使我把它放在它仍然失败。XMLWorker:找到无效的嵌套标记div,预计结束标记img
C#代码
Byte[] bytes;
using (var ms = new MemoryStream())
{
using (var doc = new Document(PageSize.A4.Rotate()))
{
using (var writer = PdfWriter.GetInstance(doc, ms))
{
//Open the document for writing
doc.Open();
//Our HTML and CSS
string exampleHtml = @"<div style='position: relative; width: 100%'>" +
"<img src='/Content/images/certificate.jpg'><img>" +
"<div style='position: absolute; top: 100px; left: 100px; width: 800px; height: 550px; text-align: center;'>" +
"<h1>" +
"<img src='/Content/images/CertTitle.png' alt='CERTIFICATE PDF' style='width: 800px;'/>" +
"</h1>" +
"<p>" +
"The School certifies that<br/>" +
"<h2>FIRSTNAME LAST NAME TITLE</h2>" +
"has participated in the class titled<br />" +
"<h2>COURSCODE - COURSENAME</h2>" +
"This activity was designated for # Credit(s)™" +
"</p>" +
"<div style='float: left; position: absolute; bottom: 50px;'>" +
"<i>Date issued: DATE<br/></i><img src='Content/images/ceo-signature.jpg' style='border-bottom: solid #000 1px;'>" +
"</div>" +
"</div>" +
"</div>";
using (var srHtml = new StringReader(exampleHtml))
{
//Parse the HTML
iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml); //right here is where it crashes ({"Invalid nested tag div found, expected closing tag img."} {"The document has no pages."}
}
doc.Close();
}
}
bytes = ms.ToArray();
}
var testFile = HttpContext.Server.MapPath("~/Content/documents/UserCertificates/test.pdf"); ;
System.IO.File.WriteAllBytes(testFile, bytes);
Response.AddHeader("Content-Disposition", "inline; filename=test.pdf");
return File(testFile, "application/pdf");
我从来没有使用结束的img标签,所以我很好奇,如果我在这里做什么了吗?
答
据我所知img标签是这样< img src="" />
,但你写这样的< img src="" >< img>
答
您的图片标签没有被正确关闭。要正确执行此操作,您需要将<img src='...'><img>
更改为<img src='...'/>
或<img src='...'></img>
。
XMLWorker适用于XML。虽然HTML支持未封闭的标签(如'img'标签),但这不是有效的XML。您必须确保使用方法来确保您的“HTML”有效。这将是没有什么不同,你的“br”标签,虽然它可能在HTML中作为
,它会打破作为无效的XML。 –