0

Trying to generate a PDF with HTML/CSS by using ITextSharp v5. The error I get is "Document has no pages". Is my parser set up wrong? How do I get the parsed HTML added to my document?

    public void ConvertHtmlToPdf(string xHtml, string css)
    {
        using (var stream = new FileStream("App_Data/pdfs/testt.pdf", FileMode.Create))
        {
            using (var document = new Document(PageSize.A4, 10f, 10f, 10f, 0f))
            {
                var writer = PdfWriter.GetInstance(document, stream);
                document.Open();

                // instantiate custom tag processor and add to `HtmlPipelineContext`.
                var tagProcessorFactory = Tags.GetHtmlTagProcessorFactory();

                var htmlPipelineContext = new HtmlPipelineContext(null);
                htmlPipelineContext.SetTagFactory(tagProcessorFactory);

                var pdfWriterPipeline = new PdfWriterPipeline(document, writer);
                var htmlPipeline = new HtmlPipeline(htmlPipelineContext, pdfWriterPipeline);

                // get an ICssResolver and add the custom CSS
                var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true);
                cssResolver.AddCss(css, "utf-8", true);
                var cssResolverPipeline = new CssResolverPipeline(
                    cssResolver, htmlPipeline
                );

                var worker = new XMLWorker(cssResolverPipeline, true);
                var parser = new XMLParser(worker);
                using (var stringReader = new StringReader(xHtml))
                {
                    parser.Parse(stringReader);
                }
                document.Close();
                writer.Close();
            }

        }
    }
Some Name
  • 561
  • 6
  • 18

1 Answers1

1

The document is empty as no data is written to it from Worker classes.

Immediately after opening the document, always add an empty chunk to document so that you can avoid this exception.

document.add(new Chunk(''));

To Convert HTML to PDF, you can check this example How to convert HTML to PDF using iText

shihabudheenk
  • 593
  • 5
  • 18