Rivoli PDF / Create accessible PDFs in C#

Create accessible PDFs in C#, not as an afterthought

An accessible PDF is one a screen reader can navigate: tagged headings, ordered content, declared language. Rivoli PDF builds the structure tree from the same headings and paragraphs you already write, so accessibility is a rendering mode, not a rewrite.

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
Accessible.cs
using Rivoli.Pdf;
using Rivoli.Pdf.Model;
using Rivoli.Pdf.Styling;

var doc = Document.Create("Accessible Annual Report", "Acme Corp");
var section = doc.AddSection();
// Bold size >= 20 tags as H1 in the structure tree
section.Add(new Paragraph("Annual Report")
    { Style = new Style { FontSize = 22, FontWeight = FontWeight.Bold } });
section.Add(new Paragraph("Readable by screen readers, in order."));

var renderer = new PdfDocumentRenderer
    { PdfAMode = PdfAMode.PdfA1a, EnableTaggedPDF = true };
renderer.RenderToFile(doc, "accessible.pdf",
    new PdfSaveOptions { PdfAMode = PdfAMode.PdfA1a,
        EnableTaggedPDF = true, Language = "en-US" });

The sample this comes from re-opens the generated bytes and verifies MarkInfo, StructTreeRoot, /Lang, and DisplayDocTitle are present, then prints the veraPDF command to validate against the external oracle.

The output

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

Tagged, accessible PDF generated by Rivoli PDF with a PDF/A-1a conformance summary table
The tagged accessibility sample: PDF/A-1a output whose structure tree, marked content, and language declaration are verified by the sample itself.

How we compare

Accessibility support across the usual candidates.

Capability Rivoli PDF iText Syncfusion
Free for small companies AGPL only Conditional
Entry price (per developer) $299 Quote ~$2,495/yr
Royalty-free redistribution included
Fully managed (no native deps)
Deterministic output
PDF/A-first
JSON document model + change tracking
Round-trip fidelity harness
Cross-language roadmap 5 planned Java/.NET 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.

Making existing documents accessible

If your current output is untagged, the fix is structural, and the structure is code you mostly have.

  1. 01 Replace visual-only emphasis with semantic heading styles; bold 20pt reads as a title to humans and tags as H1 for machines.
  2. 02 Turn on PdfAMode.PdfA1a and set the document language; both are save options, not content rewrites.
  3. 03 Give tables real header rows and lists real list items instead of styled paragraphs.
  4. 04 Add an accessibility check to CI: assert the structure markers exist in the output bytes, as our sample demonstrates.
  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.