HTML to PDF - page break with PdfSharp and HtmlRenderer

kiriz picture kiriz · Jun 6, 2016 · Viewed 23.8k times · Source

I try to convert HTML to PDF using PdfSharp and HtmlRenderer. This is part of code:

private byte[] CreateHtmlContent()
{
    string htmlContent = File.ReadAllText(@"htmlExample.txt");

    using (MemoryStream ms = new MemoryStream())
    {
        PdfDocument pdfDocument = new PdfDocument();
        PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4, 60);
        pdf.Save(ms);
        res = ms.ToArray();
    }
    return res;
}

Everything works fine except page break. On some pages I have result like on this image

HTML page break

Is it possible to fix this? HTML content is simple html that contains only headings and paragraphs and no other tags. I had no this problem with iTextSharp but on this project I have to use PdfSharp and MigraDoc.

Answer

nvm-uli picture nvm-uli · Jun 15, 2016

I had a similar challenge and resolved it as I found this pull request on github: https://github.com/ArthurHub/HTML-Renderer/pull/41

You can set the custom-css-property

td { page-break-inside: avoid; }

on all elements or selectors you want (td, p, .my-class, etc.) to control the page breaking.

You can use the value "auto" if you want the library to control your page breaking on certain elements

td { page-break-inside: auto; }

There is also a example for page breaking in running text.