2016-05-31 22 views
0

Ich versuche gerade, ein Bild zu meinem pdf-Dokument hinzuzufügen, das XMLWorker verwendet. aber aus irgendeinem Grund wollte es einen engen Img-Tag. Aber selbst wenn ich einen hineinsetze, scheitert es immer noch.XMLWorker: Ungültiges geschachteltes Tag div gefunden, erwartetes schließendes Tag img

C# -Code

 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)&trade;" + 

               "</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"); 

Ich habe noch nie verwendet img-Tags zu schließen, also bin ich gespannt, ob ich hier etwas falsch tue?

+1

XMLWorker arbeitet mit XML. Während HTML nicht geschlossene Tags unterstützt (wie das "img" -Tag), ist dies kein gültiger XML-Code. Sie müssen sicher sein, Methoden zu verwenden, um sicherzustellen, dass Ihr "HTML" gültig ist. Es würde nicht anders sein, dass Ihr "br" Tag, während es wahrscheinlich in HTML als
arbeitet, es als ungültiges XML brechen würde. –

Antwort

1

Soweit ich img-Tag wissen, wie diese < img src="" />

sein, aber Sie es wie diese