Export problem if table header does not fit on page

Hello,

With List&Label Cross Platform we use the the header of a table to show a list of items which is stored as a string in a variable.

If the header would not fit on one page, the export gets into infinite loop and keeps logging these lines:

Logs

:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >Rendering page 6643
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >ObjectReportContainer.Render(generatedProxy_3)
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.get_IsVisible() β†’ True
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.get_PageBreakBefore() β†’ False
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.get_Columns() β†’ combit.Reporting.Dom.PropertyColumns
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.get_Columns() β†’ combit.Reporting.Dom.PropertyColumns
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >ObjectReportContainer.RenderSubItem β†’ Rendering column 0
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >SubItemTable.Render(Left=0, Top=0, Width=166630, Height=227480[Top=0, Bottom=227480, Left=0, Right=166630, Width=166630, Height=2
27480], SubItemTableOptions[IsFirstRootTable: True, HierarchyLevel: 0, IsLastTable: True])
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >IdentifierCollection.DefineData(Tabelle)
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <IdentifierCollection.DefineData(Tabelle)
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >SubItemTable.Render(Left=0, Top=0, Width=166630, Height=227480[Top=0, Bottom=227480, Left=0, Right=166630, Width=166630, Height=
227480], SubItemTableOptions[IsFirstRootTable: False, HierarchyLevel: 1, IsLastTable: False])
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >IdentifierCollection.DefineData(Zusatzleistungen)
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <IdentifierCollection.DefineData(Zusatzleistungen)
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >TableLineHeader.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <TableLineHeader.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.183;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >TableLineHeader.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <TableLineHeader.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >TableLineHeader.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <TableLineHeader.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; >TableLineData.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <TableLineData.UpdateHeights
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; Page break requested, requesting page break for table β€˜β€™ (TableID: Zusatzleistungen, InternalID: 34fa33e4-2cf4-48c9-a53c-49aa6d1
2cf4b).
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.Render(Left=0, Top=0, Width=166630, Height=227480[Top=0, Bottom=227480, Left=0, Right=166630, Width=166630, Height=
227480], SubItemTableOptions[IsFirstRootTable: False, HierarchyLevel: 1, IsLastTable: False]) β†’ NeedsNewColumnOrPage
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <SubItemTable.Render(Left=0, Top=0, Width=166630, Height=227480[Top=0, Bottom=227480, Left=0, Right=166630, Width=166630, Height=
227480], SubItemTableOptions[IsFirstRootTable: False, HierarchyLevel: 1, IsLastTable: False])
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.get_LastRenderRectangle() β†’ Left=0, Top=0, Width=166630, Height=2000[Top=0, Bottom=2000, Left=0, Right=166630, Widt
h=166630, Height=2000]
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.get_LastRenderRectangle() β†’ Left=0, Top=0, Width=166630, Height=2000[Top=0, Bottom=2000, Left=0, Right=166630, Widt
h=166630, Height=2000]
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; Not enough space to render sub item for table β€˜β€™ (TableID: Tabelle, InternalID: 27c16cc8-398f-4df9-a158-934fe66c6dab), requesting
column or page break.
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.Render(Left=0, Top=0, Width=166630, Height=227480[Top=0, Bottom=227480, Left=0, Right=166630, Width=166630, Height=2
27480], SubItemTableOptions[IsFirstRootTable: True, HierarchyLevel: 0, IsLastTable: True]) β†’ NeedsNewColumnOrPage
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <SubItemTable.Render(Left=0, Top=0, Width=166630, Height=227480[Top=0, Bottom=227480, Left=0, Right=166630, Width=166630, Height=2
27480], SubItemTableOptions[IsFirstRootTable: True, HierarchyLevel: 0, IsLastTable: True])
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SubItemTable.get_LastRenderRectangle() β†’ Left=0, Top=0, Width=166630, Height=2000[Top=0, Bottom=2000, Left=0, Right=166630, Width
=166630, Height=2000]
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <ObjectReportContainer.RenderSubItem β†’ Rendering column 0
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <ObjectReportContainer.Render(generatedProxy_3)
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SkiaPdfDocumentRenderer.EndPage(False) β†’ void
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; <Rendering page 6643
:black_small_square:;1000;25.03.2026 13:12:15.184;2;ListLabel;216428-9;100:2=de.cas.drive.document.render.service.dll; SkiaPdfDocumentRenderer.BeginPage(210010, 297010, False) β†’ generatedProxy_3

I created an example project.lst and json which could reproduce the issue. Two variables are defined in variables.txt with long values. Datasource.json is included for JsonDataProvider, but the data provider should not be relevant in this case.

long_table_header_example.zip (28.5 KB)

The version 31.2.0-stable.310 was used.

With List&Label Classic this would render with 3 pages:

Do you know if we could achieve the same with cross platform? Should we define our template differently and not include long values in the header, but place it before the table instead?

Thanks in advance,
Andras

Hello Andras,

Thank you for providing the files. With them, we were able to reproduce the endless loop on our end.

However, we are facing a conceptual limitation: a table header that does not fit on a page is not a supported layout scenario. This is because a table header is intended to be repeated on every page. If the header is too large for a single page, List & Label will continue trying to place it, resulting in the endless loop behavior.

The fact that this seems to work in LL Classic is inconsistent and most likely only works by chance in that specific situation.

As a workaround, I recommend not using a table header for your β€œoversized” variables. It makes more sense to place them in a table with β€œFree content”, where the layout can be handled more flexibly.

I have attached a modified version of your project file for your reference.

Best regards.

project_LST_Json.zip (29.4 KB)

1 Like