Hvordan konfigurere generering av PDF
Ny PDF-generering
Aktivere ny PDF-generering
Fra og med versjon 7.5 av nuget-pakkene (Altinn.App.Api og Altinn.App.Core) er det lansert en ny måte å generere PDF-er på. Denne nye måten kan skrus av og på ved å legge til følgende seksjon og innstilling i appsettings.json.
"FeatureManagement": {
"NewPdfGeneration": true
}
Dette kaller den nye PDF-tjenesten. Den aksepterer en URL, som peker tilbake til en automatisk generert side i appen. Siden bygges opp og danner grunnlaget for PDF-en. Grensesnittet IPdfFormatter, som dokumentert under er fortsatt relevant hvis du trenger spesiallogikk for å skjule komponenter/sider fra PDF-en.
Innstillinger
Selv om standardinnstillingene for den nye tjenesten skal være nok for de fleste apper, kan du overstyre dem ved å legge til en PdfGeneratorSettings-seksjon i appsettings.json (se standardinnstillingene under).
"PdfGeneratorSettings": {
"ServiceEndpointUri": "https://{org}.apps.{hostName}/{appId}/#/instance/{instanceId}",
"AppPdfPageUriTemplate": "https://{org}.apps.{hostName}/{appId}/#/instance/{instanceId}?pdf=1",
"WaitForSelector": "#readyForPrint",
"WaitForTime": 5000
}
Hvis WaitForSelector er satt så blir WaitForTime ignorert. WaitForSelector sikrer at siden er ferdig oppbygd og presentert før PDF-en genereres.
Det er to ulike måter å konfigurere PDF-genereringen på:
Det er også mulig å se en forhåndsvisning av hvordan PDF-en kommer til å se ut i nettleseren imens du jobber med den (kun v7.5+).
Automatisk konfigurasjon
Denne metoden brukes som standard dersom du ikke har spesifisert en egendefinert PDF-side. Denne metoden trekker ut alle sidene og komponentene i den rekkefølgen de vises, og tar de med i PDF-dokumentet.
MERK: Denne metoden viser ikke oppsummerings-komponenter fra skjemaet.
Ekskludering av sider og komponenter
Som regel har man behov for å ekskludere visse sider og komponenter som ikke er relevant for PDF-dokumentet. Dette kan konfigureres på to ulike måter:
- Ved å modifisere
Settings.json-filen for layout-settet. - Programmatisk ved å implementere det i kode. Dette åpner for dynamisk ekskludering basert på skjemadataen.
Den programmatiske metoden du velger å sette opp er avhengig av hvilken versjon du kjører, men logikken er helt lik. Oversikten under viser hvordan du setter det opp for den versjonen du kjører:
- Opprett en klasse som implementerer
IPdfFormatter-grensesnittet som ligger iAltinn.App.Core.Features-navnerommet.
Du kan navngi og plassere filene i den mappestrukturen du selv ønsker i prosjektet ditt. Men vi anbefaler at du benytter meningsfulle navnerom som i et hvilket som helst annet .Net-prosjekt. - Registrer din implementering i Program.cs-klassen.Dette sørger for at din kode er kjent for applikasjonen og at koden blir kjørt når den skal.
services.AddTransient<IPdfFormatter, PdfFormatter>();
PdfHandler.cs-filen under App/logic/Print-mappen.Egendefinert konfigurasjon
Med Altinn Studio
Du kan legge til et tilpasset PDF-oppsett i Studio ved å konvertere en side til PDF-oppsett i sidekonfigurasjonen:

Du kan bruke komponenten Oppsummering, til å angi hvilke deler av oppsettet du vil ha med i PDF-en.

Manuell konfigurasjon
Denne metoden lar deg spesifisere en helt egendefinert PDF ved å definere en layout-fil som bestemmer hva den skal inneholde.
For å ta i bruk denne metoden må du opprette en ny layout-fil for PDF-en og sette pdfLayoutName i Settings.json til å peke til den filen:
{
"$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4/schemas/json/layout/layoutSettings.schema.v1.json",
"pages": {
"order": ["side1"],
"pdfLayoutName": "minPdfLayout"
}
}
Denne layout-filen konfigureres på akkurat samme måte som andre layout-filer, bortsett fra at ikke alle komponenttyper er tilgjengelig. Komponenttypene som kan brukes i en PDF-layout er følgende:
SummaryGroupInstanceInformationHeaderParagraphImagePanel
Forhåndsvisning i nettleseren
Det er mulig å se en forhåndsvisning av hvordan den genererte PDF-en kommer til å se ut i nettleseren imens du jobber. Følg instruksjonene nedenfor:
- Viktig: Bruk Google Chrome til å forhåndsvise PDF.
PDF-generatoren bruker en variant av Chrome til å generere PDF-en, så andre nettlesere vil ikke produsere et korrekt resultat ved forhåndsvisning. - Kjør opp appen din lokalt eller åpne appen din i testmiljøet, og start en instans.
- Åpne utviklerverktøyet ved å trykke på knappen nederst i høyre hjørne, eller bruk hurtigtasten
Ctrl+Shift+K/⌘+Shift+K.
- Trykk på
Forhåndsvis PDF-knappen i utviklerverktøyet.
PDF footer
Forutsetninger
For å bruke PDF footer-funksjonaliteten må applikasjonen din støtte tidssoner. Dette gjøres ved å legge til følgende
linjer i Dockerfile:
# Add globalization timezone support
RUN apk add --no-cache icu-libs icu-data-full tzdata
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
Linjene må legges til etter “FROM”-seksjonen som ender på “AS final”
Configuration
Di kan legge til en footer i den genererte PDF-en ved å legge til "DisplayFooter": true i PdfGeneratorSettings-seksjonen
i appsettings.json-filen.
"PdfGeneratorSettings": {
"DisplayFooter": true
}
Innhold
Footeren vil inneholde følgende informasjon:
Navnet på appen
Navnet på organisasjonen
Dato og tid for når PDF-en ble generert
Altinn referanse-ID
Sidenummer

Skjule app-navnet i PDF-en
Du kan skjule app-navnet i toppteksten og bunnteksten i den genererte PDF-en ved å sette hideAppNameInPdf i uiSettings i layout-sets.json.
Egenskapen godtar true, false, eller et boolsk dynamisk uttrykk. Uttrykket må evaluere til true eller false — tekstuttrykk støttes ikke.
{
"uiSettings": {
"hideAppNameInPdf": true
}
}
Se dynamiske uttrykk for mer informasjon.
Lag en PDF i Figma
Hvis du vil teste hvordan du kan sette opp PDF-en din, kan du gjøre det her:
Altinn Studio Komponenter.
Merk at eksempelet ikke er identisk med den faktiske koden, men er tilpasset for å lage prototyper i Figma.