Earlybyte.QuestPDF.HTML is an extension for QuestPDF that allows to generate PDF from HTML
QuestPDF currently does not support inserting html into a pdf document. So I wrote a small library for this. It doesn't support the full functionality of html and css, but I think it should be enough for most cases.
- QuestPDF
- HtmlAgilityPack is used for html parsing
The simplest example of use:
Document.Create(container =>
{
    container.Page(page =>
    {
        page.Content().Column(col =>
            {
                col.Item().HTML(handler =>
                {
                    handler.SetHtml(html);
                });
            });
    });
}).GeneratePdf(path);
I strongly recommend overloading the image upload method, because the outdated WebClient is used by default without using asynchronous. To do this, you can use the OverloadImgReceivingFunc:
col.Item().HTML(handler =>
{
    handler.OverloadImgReceivingFunc(GetImgBySrc);
    handler.SetHtml(html);
});
You can customize the styles of text and containers for tags:
handler.SetTextStyleForHtmlElement("div", TextStyle.Default.FontColor(Colors.Grey.Medium));
handler.SetTextStyleForHtmlElement("h1", TextStyle.Default.FontColor(Colors.DeepOrange.Accent4).FontSize(32).Bold());
handler.SetContainerStyleForHtmlElement("table", c => c.Background(Colors.Pink.Lighten5));
handler.SetContainerStyleForHtmlElement("ul", c => c.PaddingVertical(10));
You can set the vertical padding size for lists. This padding will not apply to sub-lists:
handler.SetListVerticalPadding(40);
You can use HTMLToQPDF.Example to try out the capabilities of this extension.
| Default Styles | Options for changing styles | 
|  |  | 
- Update version in HTMLToQPDF.csproj
- Create the package cd ./HTMLToQPDF/ && dotnet pack && cd ..
- Upload to nuget via dotnet nuget push HTMLToQPDF/bin/Debug/Earlybyte.QuestPDF.HTML.0.0.0.nupkg --api-key <API-KEY> --source https://api.nuget.org/v3/index.json
