Problem z generowaniem raportu PDF za pomocą biblioteki Itext7

0

Dzień dobry,
mam raport w formacie pdf który generowany jest za pomocą biblioteki itext7 (wersja 8.0.0) po stronie backendu w ASP.NET Core 6
Problem powstaje gdy raport ma więcej niż jedną stronę, ponieważ wówczas otrzymuje kod błędu:

fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
iText.Kernel.Exceptions.PdfException: Cannot draw elements on already flushed pages.
at iText.Layout.Renderer.DocumentRenderer.FlushSingleRenderer(IRenderer resultRenderer)
at iText.Layout.Renderer.RootRenderer.AddChild(IRenderer renderer)
at iText.Layout.RootElement1.CreateAndAddRendererSubTree(IElement element) at iText.Layout.RootElement1.AddElement(IElement element)
at iText.Layout.RootElement1.Add(IBlockElement element) at iText.Layout.Document.Add(IBlockElement element) at iText.Layout.RootElement1.ShowTextAligned(Paragraph p, Single x, Single y, Int32 pageNumber, Nullable1 textAlign, Nullable1 vertAlign, Single radAngle)
at WebAPI.Controllers.PdfController.OrderCompleted() in D:\projekty IT\Rejestr_Wylegow_NET\Backend\Controllers\BazaController.cs:line 672

Poniżej zamieszczam kod programu z linią 672, która powoduje problem.

....
  document.Add(tabelka);
 int n = pdfDocument.GetNumberOfPages();
 for (int i = 1; i <= n; i++)
 {
     document.ShowTextAligned(new Paragraph($"Strona {i} z {n}"), // Oto linia 672, która generuje problem :(((
         559, 806, i, TextAlignment.RIGHT, VerticalAlignment.BOTTOM, 0);
 }

1

Musisz dodać nową stronę do dokumentu ponieważ twój błąd to : Cannot draw elements on already flushed pages.
Patrząc na szybko dokumentacje to document.addNewPage();

0
Kardash napisał(a):

Musisz dodać nową stronę do dokumentu ponieważ twój błąd to : Cannot draw elements on already flushed pages.
Patrząc na szybko dokumentacje to document.addNewPage();

Dzięki za pomoc. Okazało się że wystarczyło poprawić linijkę kodu:

    var document = new Document(pdfDocument);

na

    var document = new Document(pdfDocument, PageSize.A4,false);

i teraz działa 😀 Dzięki twojej odpowiedzi naprowadziło to mnie na rozwiązanie problemu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1