Decision guide

Which package do you need?

Short answer: pick by what your users open. A final, portable file — PDF Reporting. A browser or an HTML pipeline — HTML Reporting. Microsoft Word — DOCX Reporting. All three share the same fluent mental model, and many teams ship more than one.

By requirement

You need… Pdf.Reporting Html.Reporting Docx.Reporting
A true PDF file, server-side ✓ Best fitReal PDF 1.7 bytes, no browser or converter Needs a browser or HTML-to-PDF step Word can export, but that needs Word
A printable, PDF-style page in the browser PDFs need a viewer, not a web page ✓ Best fitFixed pages; print/save to PDF from any browser Word can print, but layout lives in Word's engine
An editable deliverable Output is final-form PDF Output is final-form HTML ✓ Best fitReal .docx users can revise and track changes in
Charts ✓ Vector canvasDraw bars, lines, shapes with the Canvas API Bring your own SVG via raw HTML ✓ NativeEditable Word charts: bar, line, pie, stacked
Barcodes & QR codes ✓ Code 128 + QRVector barcodes and full ISO 18004 QR codes ✓ Code 128 PNGGenerated in-library ✓ Code 128 vectorCrisp at any zoom and print resolution
Filling an existing branded template Reusable IComponent templates, not file-based Placeholder & content-control replacement
Password protection / encryption ✓ AES-256User/owner passwords, permission flags ✓ Restrict EditingGuard rail, not encryption
Bookmarks & table of contents Auto TOC from headings, hierarchical outlines Captions and table of figures
Precise pagination control Two-pass layout, explicit page breaks, repeating headers Line-level splits, atomic row groups, layout warnings Word paginates when the document opens
Very large reports Deterministic code-first rendering, no browser engine Streaming, page-at-a-time async rendering Open XML packages are compact
Zero dependencies Pure managed C#, no native binaries Dependency-free core No Word, no COM — writes Open XML directly
.NET Framework support Targets .NET 8, 9, and 10 netstandard2.0 — .NET Framework 4.6.1+ netstandard2.0 — .NET Framework 4.6.1+

The same mental model

Whichever you choose, the skills transfer: create a document, describe pages and content with fluent builders, publish. Here is the same header-content-footer shape in all three:

TerraFluent.Pdf.Reporting

PdfDocument.Create(container =>
{
    container.Page(page =>
    {
        page.Size(PageSize.A4);
        page.Header().Text("Quarterly Report").Bold();
        page.Footer().AlignCenter().Text(t =>
        {
            t.Span("Page "); t.CurrentPageNumber();
            t.Span(" / "); t.TotalPages();
        });
        page.Content().Column(col =>
        {
            col.Item().H1("Executive Summary");
            col.Item().Text("Revenue improved across every practice.");
        });
    });
}).PublishPdf("report.pdf");

TerraFluent.Html.Reporting

var report = ReportDocument.Create(PageSize.A4)
    .Header(h => h.AddText("Quarterly Report").Bold())
    .Footer(f => f.AddPageNumber("Page {page} of {totalPages}"))
    .Content(c =>
    {
        c.AddHeading("Executive Summary", HeadingLevel.H1);
        c.AddParagraph("Revenue improved across every practice.");
    })
    .Build();

report.RenderHtmlDocument("report.html");

TerraFluent.Docx.Reporting

Document.Create(doc =>
{
    doc.Page(page =>
    {
        page.Size(PageSize.A4);
        page.Header().Text("Quarterly Report", t => t.Bold());
        page.Footer().Text(t =>
        {
            t.Span("Page "); t.CurrentPageNumber();
            t.Span(" of "); t.TotalPages();
        });
        page.Content().H1("Executive Summary");
        page.Content().Text("Revenue improved across every practice.");
    });
}).PublishDocx("report.docx");

Honest counter-signals

FAQ

Common questions

Should I generate PDF, HTML, or DOCX reports in .NET?

Pick by what your users open. If they need a final, portable file, use TerraFluent.Pdf.Reporting for true PDFs. If they view in a browser or you want an HTML pipeline that prints to PDF, use TerraFluent.Html.Reporting. If they revise, comment, or track changes in Microsoft Word, use TerraFluent.Docx.Reporting. All three share the same fluent mental model.

Can I generate PDF files server-side without a browser?

Yes. TerraFluent.Pdf.Reporting writes true PDF 1.7 bytes directly from C# — pure managed code with zero dependencies, so it runs in Docker, Azure Functions, and AWS Lambda with no headless browser or converter in the loop.

Can I convert the HTML report output to a PDF file server-side?

TerraFluent.Html.Reporting produces print-perfect, self-contained HTML pages, so any HTML-to-PDF step you already trust (a browser print dialog or a server-side converter) turns them into PDF. If you want PDF bytes without any converter, use TerraFluent.Pdf.Reporting instead.

Can I use multiple TerraFluent packages in one project?

Yes. They are independent NuGet packages with no shared dependency — adding more than one costs nothing but the package references, and the fluent API skills transfer between them.

Still unsure? Look at the output.

The samples gallery shows real rendered documents from every library — five minutes there usually settles it.