PDF

Hvordan konfigurere generering av PDF.

Det er mulig å ekskludere enkelte komponenter, eller hele sider fra å bli med i pdf.

Det er to måter å ekskludere data fra PDF på

  1. Via konfigurasjon i filen Settings.json under App/ui
  2. Programmatisk For den programatiske måten er det noen mindre forskjeller avhengig av hvilke versjon av applikasjonsmalen du er på.
    I tidligere versjoner så gjøres endringene i PdfHandler.cs filen under App/logic/Print katalogen.

    I versjon 7 har vi endret måten vi gjør kode baserte tilpassninger på. Vi benytter nå dependency injection i stedet for overstyring av metoder. Hvis du tidligere plasserte koden din i FormatPdf metoden in PdfHandler.cs klassen så vil du erfare at det er mer eller mindre det samme som nå gjøres.

    1. Opprett en klasse som implementerer IInstanceValidator grensesnittet som ligger i Altinn.App.Core.Features.Validation 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.
    2. Registrer din implementering i Program.cs klassen
      services.AddTran  sient<IInstanceValidator, InstanceValidator>();
      
      Dette sørger for at din kode er kjent for applikasjonen og at koden blir kjørt når den skal.

    Siden IPdfFormater grensesnittet har samme metode som PdfHandler.cs klassen er resten av dokumentasjonen og eksemplene felles for alle versjoner.

    Dersom en side/komponent alltid skal ekskluderes fra PDF er det anbefalt å sette det opp i konfigurasjonsfilen.

    Dersom ekskludering av en side/komponent er avhengig av dynamikk dette gjøres programmatisk.

    Ekskludere sider

    I eksemplene nedenfor ekskluderes siden med id page2 fra PDF.

    Konfigurasjon

    Oppsett i Settings.json under App/ui:

    {
      "$schema": "https://altinncdn.no/schemas/json/layout/layoutSettings.schema.v1.json",
      "pages": {
        "excludeFromPdf": ["page2"]
      }
    }
    

    Programmatisk

    public async Task<LayoutSettings> FormatPdf(LayoutSettings layoutSettings, object data)
    {
        if (data.GetType() == typeof(Skjema))
        {
            layoutSettings.Pages ??= new();
            layoutSettings.Pages.ExcludeFromPdf ??= new();
            layoutSettings.Pages.ExcludeFromPdf.Add("page2");
        }
        return await Task.FromResult(layoutSettings);
    }
    

    Ekskludere komponenter

    I eksemplene nedenfor blir komponenten med id image-component-id ekskludert fra pdf.

    Konfigurasjon

    Oppsett i Settings.json under App/ui:

    {
      "$schema": "https://altinncdn.no/schemas/json/layout/layoutSettings.schema.v1.json",
      "components": {
        "excludeFromPdf": ["image-component-id"]
      }
    }
    

    Programmatisk

    public async Task<LayoutSettings> FormatPdf(LayoutSettings layoutSettings, object data)
    {
        if (data.GetType() == typeof(Skjema))
        {
            layoutSettings.Components ??= new();
            layoutSettings.Components.ExcludeFromPdf ??= new();
            layoutSettings.Components.ExcludeFromPdf.Add("image-component-id");
        }
        return await Task.FromResult(layoutSettings);
    }
    

    Ekskludere komponentinnslag i en repeterende gruppe

    Dersom du ønsker å ekskludere én eller flere komponenter fra et innslag i en repeterende gruppe gjøres dette ved å spesifisere indeksen av gruppeelementet i tillegg til komponent id.

    Format for ekskludering: componentId-<groupIndex>.

    Dersom komponenten skal ekskluderes for alle innslag i den repeterende gruppen kan intruksjonene i seksjonen over følges i stedet.

    I eksempelet nedenfor ekskluderes gruppeelement med indeks 1 og id ownerId fra PDF.

    Programmatisk

    public async Task<LayoutSettings> FormatPdf(LayoutSettings layoutSettings, object data)
        {
            if (data.GetType() == typeof(Skjema))
            {
                layoutSettings.Components ??= new();
                layoutSettings.Components.ExcludeFromPdf ??= new();
                layoutSettings.Components.ExcludeFromPdf.Add("ownerId-1");
            }
            return await Task.FromResult(layoutSettings);
        }
    

    Bildet illustrerer at komponenten med indeks 0 og 2 er bevart i PDF, mens komponent med indeks 1 er borte.

    &ldquo;Eksempel ekskludering av komponent i repeterende gruppe&rdquo;

    Eksempel ekskludering av komponent i repeterende gruppe