Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic hiding of elements in pdf results in multiple blank pages #8

Closed
OddArneSaetervik opened this issue Mar 18, 2022 · 0 comments
Closed
Assignees
Labels
kind/bug Something isn't working

Comments

@OddArneSaetervik
Copy link

OddArneSaetervik commented Mar 18, 2022

@hflateland commented on Fri Mar 11 2022

We have a long form with many questions, where the user often only changes radio-button values on a few. We have therefore added dynamic hiding in the produced PDF of all fields in the schema that is unchanged (Possible answers are Yes, No, Unchanged).

The problem that we face is that the PDF is still created with room for all the fields that has been hidden and we get a PDF with eight blank pages that otherwise would have contained the answers.

Screenshot:
image

Example file:
Forespørsel om endring av vergefullmakt (6).pdf

Steps to reproduce:

Analysis

Ater studying the source code for the PdfHandler implemented in the app in question.
Seems the issue is simple to fix through the code.
There is a possibility of excluding full pages in addition to the form components.
By re-writing the logic when components are hidden to check if the isn't any content left on the page,
the page can simple be excluded.

old logic:

  var list = new[]{
        new {Item = page3, Headers = page3Headers},
        new {Item = page4, Headers = page4Headers},
        new {Item = page5, Headers = page5Headers},
        new {Item = page6, Headers = page6Headers},
        new {Item = page7, Headers = page7Headers},
        new {Item = page8, Headers = page8Headers},
        new {Item = page9, Headers = page9Headers},
        new {Item = page10, Headers = page10Headers},

      };

      foreach (var page in list)
      {
        var hasValue = false;
        foreach (var item in page.Item)
        {
          if (item.Value == "ingenEndring" || string.IsNullOrEmpty(item.Value))
            layoutSettings.Components.ExcludeFromPdf.Add(item.Id);
          else
            hasValue = true;
        }
        if (!hasValue)
          foreach (var item in page.Headers)
          {
            layoutSettings.Components.ExcludeFromPdf.Add(item.Id);
          }
      }
    }

new logic

            var list = new[]{
                new {Name = "side03", Item = page3, Headers = page3Headers},
                new {Name = "side04",Item = page4, Headers = page4Headers},
                new {Name = "side05",Item = page5, Headers = page5Headers},
                new {Name = "side06",Item = page6, Headers = page6Headers},
                new {Name = "side07",Item = page7, Headers = page7Headers},
                new {Name = "side08",Item = page8, Headers = page8Headers},
                new {Name = "side09",Item = page9, Headers = page9Headers},
                new {Name = "side10",Item = page10, Headers = page10Headers}
             };



            foreach (var page in list)
            {
                var hasValue = false;
                foreach (var item in page.Item)
                {
                    if (item.Value == "ingenEndring" || string.IsNullOrEmpty(item.Value))
                        layoutSettings.Components.ExcludeFromPdf.Add(item.Id);
                    else
                        hasValue = true;
                }

                if (!hasValue)
                {
                    layoutSettings.Pages.ExcludeFromPdf ??= new List<string>();
                    layoutSettings.Pages.ExcludeFromPdf.Add(page.Name);
                }
            }

new logic results in this pdf
image.png
This issue seems to be partly related to Altinn/app-frontend-react#790

@OddArneSaetervik OddArneSaetervik added kind/bug Something isn't working area/pdf labels Mar 18, 2022
@acn-sbuad acn-sbuad self-assigned this Mar 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants