/
PDF-generator - Puppeteer - Løsningsskitsering

PDF-generator - Puppeteer - Løsningsskitsering

Estimat af POC:

  • Opsætning af basis projekt med swagger, Containerisering, med STAR.f

    • 20 timer

  • Indførsel at puppeteer:

    • 16 timer

  • Sikring af webtilgængelighed:

    • 16 timer

  • Klientgenerering

    • 16 timer

  • DevOps (Byg og NuGet)

    • 12 timer

  • Dokumentation

    • 8 timer

  • Test

    • 16 timer

  • Total:

    • 104 timer

Formål

At kunne generere webtilgængelige PDF’er på en ensartet måde, i alle forretningsdomæner, ud fra HTML.

Arkitektur

Der oprettes en isoleret container, der kun har til opgave at tage imod HTML og sende en PDF tilbage. Denne skal benytte så lightweight Linux som muligt (Alpine).

Det er et .NET-projekt, der anvender GitHub - hardkoded/puppeteer-sharp: Headless Chrome .NET API til at starte en Chromium-instans op med den givne HTML, og ud fra det bliver en PDF genereret.

Integrationsdesign

Der udstilles et Swagger-spec samt en autogenereret klient, som publiceres til NuGet. Individuelle løsninger kan kalde PDF-generator-containeren gennem den autogenererede klient med HMTL, og få en tilsvarende PDF retur.

Implementationsperspektiv

Containerisering

Projektet skal opbygges som alle andre STAR projekter og aftage STAR.Foundation således at miljøvariable for logning mm. automatisk indføres.
Det er vigtigt at containeren holdes stateless for at sikre alle jobs kan udføres parallelt og containere kan skalere.

Puppeteer

Der anvendes puppeteer-sharp til at starte en Chromium-instans og derfra generere PDF’er

GitHub - hardkoded/puppeteer-sharp: Headless Chrome .NET API

Følgende features i Puppeteer anvendes, der sikrer at PDF’er er opmærket:

Add default flag to export tagged PDFs in anticipation of Chrome 81 by chrisjpatty · Pull Request #5337 · puppeteer/puppeteer

Export tagged PDFs for Accessibility · Issue #7509 · puppeteer/puppeteer

Swagger / Client API / Publicering til NuGet

For at sikre ensartet brug af det udstillede API-endpoint skal der på baggrund af en swagger spec oprettes klient api, dette skal følge samme fremgangsmåde som i andre STAR applikationer. Dette kræver STAR.foundation med tilhørende postbuild.

Som en del af bygpipelinen skal klient api’et pakkes i en NuGet pakke og pushes til STAR’s feed. Versioneringen skal følge STAR sædvanlige versionering.

Udeståender

Logning

Er der logningskrav?

Performancemonitorering

Servicen skal understøtte performancemonitorering, og bør load-testes inden produktionssætning.

Skalerbarhed

Bør vi evt anvende eventkø (RabbitMQ)?

Caching

Hvis loadtesten ser ud til at presse containeren kan der med fordel laves caching.