I try to convert HTML to PDF using PdfSharp and HtmlRenderer. This is part of code:
private byte[] CreateHtmlContent()
{
string htmlContent = File.ReadAl
You can use the prerelase version in Nuget (1.5.1-beta1) and then:
td { page-break-inside: avoid; }
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.
This is also resolved by adding an appropriate DIV tag if you're not using tables.
foreach (DataRow row in group)
{
HTMLoutput += "<div style=\"page-break-inside: avoid\"> ";
HTMLoutput += "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
HTMLoutput += "</div>";
}
This is a little late, but I ran into the same issue. The problem is the margin set on the GeneratePdf call. Remove it and it's fine.
PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);