Skip to content
The top of an invoice rendered by Tagua, with a table of lines, totals and a payment QR code.

Accessible, archival PDF reports for .NET

Describe a report in a YAML template, give it your data, and get a PDF that screen readers can read, archives can keep, and invoicing systems can process.

Accessible by default

Every PDF is tagged: headings, paragraphs, tables with header cells, figures with alternative text, and a reading order. Ask for PDF/UA-1 or PDF/UA-2 and Tagua checks the template before any data is read.

Archival and e-invoicing

PDF/A-2b, PDF/A-3b, PDF/A-4 and PDF/A-4f, with embedded, subset fonts. Hybrid Factur-X and ZUGFeRD invoices carry their XML inside the PDF.

Templates are text

Bands, groups, tables, charts, barcodes and subreports in YAML or JSON. Easy to review, diff and generate, with a JSON Schema for your editor.

Any script

Right-to-left text, Arabic and Indic shaping with HarfBuzz, font fallback, and line breaking for Chinese, Japanese and Thai.

Migrate from RDLC

tagua import converts SSRS and ReportViewer reports into templates, and lists anything that needs a second look.

Safe and fast

No SQL or code in templates: expressions are sandboxed and type-checked. No reflection, so it runs under native AOT.

title: Orders
culture: en-US
data:
orders: { fields: { Customer: string, Total: decimal } }
body:
detail:
- layout: row
content:
- { type: text, value: "{Customer}", width: 3fr }
- { type: text, value: "{Total:C}", width: 1fr, align: end }
reportFooter:
- content:
- { type: text, value: "Total {Sum(Total):C}", fontWeight: bold, align: end }

Every image on this site is a page that Tagua rendered from the templates in its repository.

Tagua is free for companies with fewer than 100 people and less than USD 1 million in revenue, for noncommercial use, and for a 32-day evaluation. Larger companies buy a Professional or Enterprise license. See licensing.