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 vil sørge for at den nye PDF tjenesten kalles. Denne aksepterer en url som peker tilbake til en automatisk generert side i appen. Siden bygges opp og danner grunnlaget for PDF’en. IPdfFormatter
grensesnittet som dokumentert nedenfor er fortsatt relevant hvis du trenger spesiallogikk for skjuling av komponenter/sider fra PDF’en.
Innstillinger
Selv om standard innstillingene for den nye tjenesten skal være nok for de fleste applikasjoner kan de overstyres ved å legge til en PdfGeneratorSettings seksjon i appsettings.json (standard innstillinger vises 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.
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.
Avhengig av hvilken versjon du kjører setter man opp den programmatiske metoden litt forskjellig, men logikken er helt lik. Oversikten under viser hvordan det settes opp for 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 klassenDette 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
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 på den filen:
{
"$schema": "https://altinncdn.no/schemas/json/layout/layoutSettings.schema.v1.json",
"pages": {
"pdfLayoutName": "minPdfLayout"
}
}
Denne layout-filen konfigureres på akkurat samme måte som andre layout-filer, bortsett fra at ikke alle komponent-typer er tilgjengelig. Komponent-typene som kan brukes i en PDF-layout er følgende:
Summary
Group
InstanceInformation
Header
Paragraph
Image
Panel
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. - I appen du ønsker å forhåndsvise, legg til
?pdf=preview
på slutten av URLen i nettleseren og trykk enter.
Dette vil sørge for at PDF-layouten ligger klar i bakgrunnen slik at du kan få en umiddelbar preview. Du kan oppleve svakere ytelse i denne modusen. - Når du er klar til å fohåndsvise, bruk Chrome sin innebygde print-funksjon (
Ctrl+P
/⌘+P
) for å se en forhåndsvisning av hvordan PDF-dokumentet kommer til å se ut.