Search code examples
c#.net-5itext7

iText 7 HTML to PDF error when deployed in IIS


Using itext7 with the pdfHtml add-on, I am getting this error below when the web application is deployed in IIS. Works fine on development

System.NullReferenceException: Object reference not set to an instance of an object.
   at iText.Html2pdf.Attach.Impl.Tags.BrTagWorker..ctor(IElementNode element, ProcessorContext context)
   at iText.Html2pdf.Attach.Impl.DefaultTagWorkerMapping.<>c.<.cctor>b__1_10(IElementNode lhs, ProcessorContext rhs)
   at iText.Html2pdf.Attach.Impl.DefaultTagWorkerFactory.GetTagWorker(IElementNode tag, ProcessorContext context)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.Visit(INode node)
   at iText.Html2pdf.Attach.Impl.DefaultHtmlProcessor.ProcessDocument(INode root, PdfDocument pdfDocument)
   at iText.Html2pdf.Attach.Attacher.Attach(IDocumentNode documentNode, PdfDocument pdfDocument, ConverterProperties converterProperties)
   at iText.Html2pdf.HtmlConverter.ConvertToDocument(String html, PdfDocument pdfDocument, ConverterProperties converterProperties)
   at iText.Html2pdf.HtmlConverter.ConvertToPdf(String html, PdfDocument pdfDocument, ConverterProperties converterProperties)
   at iText.Html2pdf.HtmlConverter.ConvertToPdf(String html, PdfWriter pdfWriter, ConverterProperties converterProperties)

Here is the code that I use to convert html string to pdf

public void GeneratePdf(string htmlContent, string fileName, string securityCode) {

            StringBuilder sb = new StringBuilder();
            sb.Append(htmlContent);
            string baseUri = _env.ContentRootPath + "\\assets\\";
            ConverterProperties prop = new();
            prop.SetBaseUri(baseUri);
            WriterProperties writerProperties = new();
            writerProperties.SetStandardEncryption(Encoding.Default.GetBytes(securityCode),
                Encoding.Default.GetBytes(securityCode),
                EncryptionConstants.ALLOW_PRINTING,
                EncryptionConstants.ENCRYPTION_AES_128);

            PdfWriter pdfWriter = new(new FileStream(fileName, FileMode.Create), writerProperties);
            HtmlConverter.ConvertToPdf(sb.ToString(), pdfWriter, prop);

        }

Solution

  • Found out that iText7's pdfHtml add-on is bad with <br/> tags. Removed all line break tags which fixed the error. Note that this only happens when the application is deployed in IIS.