Rivoli PDF / PDF generation for Azure Functions

PDF generation that fits inside an Azure Function

Browser-based PDF libraries and the consumption plan don't mix: cold starts stretch, sandboxes break, and native binaries bloat the deployment. Rivoli PDF renders in-process and in-memory, so a function can build and return a PDF in one request.

Install and generate

No system libraries, no headless browser, no per-platform setup. Rivoli.Pdf 0.1.0 targets .NET 8 and .NET 10.

Terminal
dotnet add package Rivoli.Pdf
GenerateReceipt.cs
using Rivoli.Pdf;
using Rivoli.Pdf.Builders;

var doc = Document.Create("Receipt #8412", "Acme Cloud");
doc.AddSection()
    .H1("Receipt #8412")
    .AddParagraph("Paid in full. Thank you for your order.");

using var buffer = new MemoryStream();
new PdfDocumentRenderer().Render(doc, buffer);
return buffer.ToArray(); // hand to your HTTP response

Render to a MemoryStream and return the bytes with content type application/pdf. Works on the isolated worker model, consumption or premium plans, Windows or Linux.

The output

Real output from the runnable samples in the Rivoli PDF repository.

Invoice PDF generated by Rivoli PDF: company header, line-item table with computed totals, payment terms
Generated by the invoice showcase sample in the Rivoli PDF repository. One managed library, no native dependencies.

How we compare

The practical constraints that matter inside a function host.

Capability Rivoli PDF IronPDF Aspose.PDF
Free for small companies
Entry price (per developer) $299 $999 ~$1,679
Royalty-free redistribution included Add-on Add-on
Fully managed (no native deps)
Deterministic output
PDF/A-first
JSON document model + change tracking
Round-trip fidelity harness
Cross-language roadmap 5 planned Multi Multi

Competitor prices are researched approximations (June 2026); several vendors are now quote-gated, so some figures are historical or third-party. Rivoli PDF is pre-1.0: document creation is feature-complete, while full parsing of arbitrary PDFs and rasterized rendering are partial and on the near-term roadmap.

Pricing

Free for individuals and for organisations under US$1M in annual gross revenue. One perpetual per-developer license for everyone else.

Free
$0 forever

Full library, no watermark, no page limits. For individuals and organisations under US$1M in annual gross revenue.

Founder license
$299 per developer · perpetual

Buy once, use forever. Royalty-free redistribution included, and the early-access rate locks in for life.

Full details on the product page and in the license terms.

Moving PDF generation into Functions

The pattern is the same whether you're consolidating a PDF microservice or replacing a browser-based function that keeps timing out.

  1. 01 Render to a MemoryStream with PdfDocumentRenderer.Render(document, stream) and return the bytes from your HTTP trigger.
  2. 02 Delete custom handler or startup hacks that existed to warm up a browser; there is no process to warm.
  3. 03 Cache document trees (they serialize to JSON) if you generate variations of the same template; you only pay for layout at render time.
  4. 04 Load test the consumption plan again: managed rendering changes the memory and cold-start math.
  5. 05 Before migrating reading-heavy workflows (filling existing forms, rendering pages to images), check current support in the docs gallery: Rivoli PDF is pre-1.0 and strongest at authoring.

The full migration guide, with concept mappings and before/after code, lives in the documentation.

Start free. Pay only when you're big.

Install the package today. When your company crosses the US$1M line, the Founder rate locks in for life.