Результаты синтаксического анализа в "Документ не имеет страниц" - PullRequest
0 голосов
/ 05 февраля 2020

Попытка создать PDF с HTML / CSS с помощью ITextSharp v5. Я получаю ошибку «В документе нет страниц». Мой парсер настроен неправильно? Как добавить обработанный HTML в мой документ?

    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();
            }

        }
    }

1 Ответ

1 голос
/ 06 февраля 2020

Документ пуст, поскольку в него не записываются данные из классов Worker.

Сразу после открытия документа всегда добавляйте пустой чанк в документ, чтобы избежать этого исключения.

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

Чтобы преобразовать HTML в PDF, вы можете проверить этот пример Как преобразовать HTML в PDF с помощью iText

...