Fra Nav · Bygd for gjenbruk

pdfgenrs

Typst-mal inn. Ferdig dokument ut.

pdfgenrs tar en Typst-mal og litt JSON-data og gir deg en arkivgyldig(PDF/A-2a og PDF/UA-1) PDF tilbake over HTTP. Samme oppskrift bak brev, vedtak og kvitteringer — i produksjon i Nav.

Rust·MIT-lisens·PDF/A-2a · PDF/UA

vedtak.typmal
#heading(level: 1)[Vedtak om #ytelse]

Til #navn
Sak #saksnr

Vi har innvilget
søknaden din om
#ytelse, datert
#dato

Med vennlig hilsen
#saksbehandlendeenhet
            
Samme data, to former. Malen til venstre, det ferdige dokumentet til høyre. Verdiene i blått er de samme feltene, fylt inn. Fiktivt eksempel.

Slik virker det

pdfgenrs er én liten rust-tjeneste (Axum) som lastes med malene dine og svarer på HTTP. Du eier malene og dataene — pdfgenrs står for forvandlingen.

  1. Steg 1

    Skriv malen

    En .typ-fil med Typst under templates/ditt_teamnavn/. Feltene {{navn}} og {{dato}} er hull som fylles av dataene.

  2. Steg 2

    Send JSON-data

    Dataene kobles til malen over HTTP. Under utvikling leser pdfgenrs testdata fra data/<app>/<mal>.json, så du ser resultatet i nettleseren mens du jobber.

  3. Steg 3

    Få PDF-en tilbake

    GET /api/v1/genpdf/<app>/<mal> gir en ferdig PDF.

Bygd for arkivet — og for lesbarhet

Et offentlig dokument skal kunne arkiveres i årevis og leses av alle. pdfgenrs sikter mot standardene som gjør nettopp det, og har gjort det i produksjon.

Siden 2026
pdfgenrs har generert dokumenter i Nav siden 2026 — brev, vedtak og kvitteringer bygget på det samme mønsteret.
PDF/A-2a
Målet er PDF-er som er gyldige for langtidsarkivering, ikke bare for øyeblikket de lages i.
PDF/UA
Universell utforming er et uttalt mål: dokumenter som også er tilgjengelige, ikke bare arkivgyldige.

Kom i gang

pdfgenrs brukes oftest som et basisbilde: du legger malene, fontene og ressursene dine oppå. Alt du trenger er Docker.

1 · Dockerfile

Dockerfile
FROM ghcr.io/navikt/pdfgenrs:<release>

COPY templates /app/templates

2 · Mappestruktur

terminal
# grunnstruktur
mkdir {templates,data}

# én mappe per team/app
mkdir {templates,data}/ditt_teamnavn

Legg .typ-malene i templates/ditt_teamnavn/ og tilhørende testdata i data/ditt_teamnavn/. Navnet blir en del av API-stien.

Ta den i bruk i din virksomhet

pdfgenrs er ikke bundet til Nav. Mønsteret — mal pluss data pluss en liten tjeneste — passer enhver virksomhet som må lage mange like dokumenter.

Det du trenger

  • Docker til å kjøre basisbildet fra ghcr.io/navikt/pdfgenrs
  • Typst-maler og JSON-data for dokumentene dine
  • Fontene du vil bake inn, om standardoppsettet ikke holder

Det du bør vite

MIT-lisensiert og fritt å bruke. Vi lover ingen support-SLA, men issues og pull requests er velkomne.

Klar for enhver norsk etat