page.Header().Element(ComposeHeader); page.Content().Element(ComposeContent); page.Footer().Element(ComposeFooter); );

var model = new InvoiceModel /* populate data */ ; var document = new InvoiceDocument(model); var pdfBytes = document.GeneratePdf(); return File(pdfBytes, "application/pdf", "Invoice.pdf"); If you prefer using HTML/CSS for layout (like building a webpage), DinkToPdf is ideal. Install DinkToPdf dotnet add package DinkToPdf dotnet add package DinkToPdf.AspNetCore Custom HTML Template var converter = new BasicConverter(new PdfTools()); var doc = new HtmlToPdfDocument()

void ComposeContent(IContainer container)

Introduction In modern web applications, generating PDF documents dynamically—such as invoices, reports, certificates, or receipts—is a common requirement. ASP.NET Core 5.0 provides a robust framework for building such features, but unlike its .NET Framework predecessor, it does not include built-in PDF generation libraries. However, developers can leverage powerful, open-source, and free libraries to create highly customized PDFs.

table.Header(header => header.Cell().Text("#"); header.Cell().Text("Product"); header.Cell().Text("Qty"); header.Cell().Text("Total"); );

container.Row(row => row.RelativeItem().Text("INVOICE").FontSize(24).SemiBold(); row.ConstantItem(100).Text($"Date: Model.Date:dd MMM yyyy"); );

public InvoiceModel Model get;