NETReporter.Abstractions 3.9.0
NETReporter.Abstractions
Společná rozhraní a typy knihovny NETReporter. Balíček nemá žádné závislosti na renderovacích knihovnách (QuestPDF, Roslyn, OxyPlot, ZXing), takže ho může používat kód, který report jen zadává, bez toho, aby tahal celou knihovnu.
Obsahuje:
IReportRenderer– vykreslení reportu z proudů šablony a dat (PDF, SVG, HTML, JSON, WebP, PNG, JPEG, stránky po jedné),ITemplateTools– validace šablony a dat, datový kontrakt (TemplateDataContract) a ukázková data,RenderOptionsa PDF volby (PdfConformance,PdfAttachment,PdfEncryption),- diagnostiky (
Diagnostic,BindingDiagnostic,DiagnosticCodes) a pozorovatele pipeline (IReportPipelineObserver).
Implementace jsou dvě a nahrazují se registrací v DI:
| Balíček | Implementace | Kde se renderuje |
|---|---|---|
NETReporter |
ReportRenderer, TemplateTools |
v procesu aplikace |
NETReporter.Client |
ReportServerRenderer, ReportServerTemplateTools |
na serveru ReportServer, přihlášení API tokenem |
Typy zůstaly ve svých jmenných prostorech (NetReporter, NetReporter.Common, NetReporter.Bindings …) a knihovna NETReporter je přeposílá (TypeForwardedTo), takže stávající kód se nemění.
Balíčky NETReporter, NETReporter.Abstractions a NETReporter.Client se vydávají společně se stejnou verzí. Seznam změn je v souboru CHANGELOG.md v balíčku.
Požadavky: .NET 10.
Showing the top 20 packages that depend on NETReporter.Abstractions.
| Packages | Downloads |
|---|---|
|
NETReporter
Reportovaci knihovna pro generování PDF reportů z JSON šablon
|
62 |
|
NETReporter
Reportovaci knihovna pro generování PDF reportů z JSON šablon
|
9 |
|
NETReporter
Reportovaci knihovna pro generování PDF reportů z JSON šablon
|
8 |
|
NETReporter.Client
Tenký klient pro ReportServer: stejné rozhraní jako knihovna NETReporter (IReportRenderer, ITemplateTools), ale report se vykreslí na serveru a klient se přihlašuje API tokenem. Bez QuestPDF, Roslynu a dalších těžkých závislostí.
|
8 |
|
NETReporter
Reportovaci knihovna pro generování PDF reportů z JSON šablon
|
6 |
|
NETReporter
Reportovaci knihovna pro generování PDF reportů z JSON šablon
|
5 |
|
NETReporter.Client
Tenký klient pro ReportServer: stejné rozhraní jako knihovna NETReporter (IReportRenderer, ITemplateTools), ale report se vykreslí na serveru a klient se přihlašuje API tokenem. Bez QuestPDF, Roslynu a dalších těžkých závislostí.
|
5 |
|
NETReporter.Client
Tenký klient pro ReportServer: stejné rozhraní jako knihovna NETReporter (IReportRenderer, ITemplateTools), ale report se vykreslí na serveru a klient se přihlašuje API tokenem. Bez QuestPDF, Roslynu a dalších těžkých závislostí.
|
4 |
- Templates: merged table cells. A cell of `rows.cells`, `rows.group.summary.cells` and `totalSummary.cells` takes the new optional `colSpan`: a whole number of at least 1, or a binding evaluated per row (`"{{# i.IsNote ? 4 : 1 }}"` for a note over the full width), so a cell stretches over the next columns, for example the label *Total* over the first three columns of the summary. The span counts the columns of the template, columns hidden by `visibleIf` drop out of it, a span past the end of the row is cut, and the cells of the covered columns are neither evaluated nor drawn. A column covered by a number needs no cell in `rows.cells` (no `NRP022`); a span given by a binding covers nothing in the validation, because it may be 1 in another row.
- Templates: header groups. Consecutive visible columns with the same new optional `columns[].headerGroup` (text, a binding is evaluated) get a shared cell above their headers; the header then has two rows and the columns without a group span both. The group has the header style and is always centered.
- Templates: merging equal values. A column with the new optional `"mergeEqual": true` merges consecutive data rows with the same cell text into one cell (rowspan) with the text and style of the first row. It merges only within the data rows of one group (a group row and a summary break it) and hierarchically: a run ends where the run of a merged column to the left ends, so the same city in two regions is not merged; a cell that is part of a `colSpan` breaks it too. The debug output (`RenderBindingsAsExpressions`) shows the expressions but merges by the data, as the group key. In PDF, SVG and the image formats a merged cell over a page break repeats its text on every page it reaches; HTML writes `rowspan` and `colspan` and two header rows; the JSON render tree has `rowSpan` on merged cells (only above 1), `headerGroups` on the table (only with groups) and `headerGroup` and `mergeEqual` in the `columns` attribute.
- Templates: the new code `NRP047` (`DiagnosticCodes.InvalidTableCellSpan`). Error: `colSpan` below 1, not whole, or a text without a binding (a quoted number gets the hint to write it without quotes); another type is `NRP014`. Warning: a number past the last column (cut) and a cell of a column covered by another cell (never drawn). At run time a binding that does not give a whole number of at least 1 is a warning and the cell does not stretch.
- Template schema: `columns[]` describes `headerGroup` (string) and `mergeEqual` (bool), the description of `cells` mentions `colSpan`.
- Library: `IRenderSink` has two new default interface methods: `TableHeaderGroup(colIndex, colSpan, style, text)` (the default does nothing, the header of a custom sink stays one row) and `TableCell(colIndex, style, text, colSpan, rowSpan)` for a merged cell (the default calls `TableCell(colIndex, style, text, colSpan)`, so a custom sink gets the following rows without the merged cells; every cell carries its `colIndex`). The PDF table places every cell explicitly (`Row`, `Column`).
- Template editor: the table editor has *Header group* and *Merge equal* for every column and *Columns* (`colSpan`, a number or a binding) for the cells of rows and summaries. A column covered by a number shows *Covered by the cell of column …* instead of the inputs and its cell is not written to the JSON (the editor keeps it, so it comes back when the span gets smaller). The data contract reads the fields used in `colSpan` and `headerGroup`, the translation of the assistant translates `headerGroup`, and the cheat sheet of the assistant describes the merged cells.
- Data contract: a field read in a `colSpan` binding has the new hint `DataFieldHint.ColumnSpan` (the editor shows *cell column span*), and the generated sample data give it 1, so the sample table stays readable instead of stretching every row. A `NETReporter.Client` older than this version reports the new hint value from the server as unknown.
Celý seznam změn: CHANGELOG.md v balíčku a https://dev.azure.com/advsoft/Knihovny/_git/NetReporter?path=/src/NetReporter/CHANGELOG.md
.NET 10.0
- No dependencies.
| Version | Downloads | Last updated |
|---|---|---|
| 3.9.2 | 4 | 10/28/2026 |
| 3.9.1 | 1 | 10/27/2026 |
| 3.9.0 | 6 | 10/20/2026 |
| 3.8.1 | 6 | 10/19/2026 |
| 3.8.0 | 4 | 10/19/2026 |
| 3.7.0 | 4 | 10/19/2026 |
| 3.6.0 | 5 | 10/17/2026 |
| 3.5.1 | 62 | 10/15/2026 |
| 3.5.0 | 4 | 10/15/2026 |
| 3.4.2 | 4 | 10/15/2026 |
| 3.4.0 | 6 | 10/12/2026 |
| 3.3.0 | 4 | 10/11/2026 |
| 3.2.2 | 4 | 10/10/2026 |
| 3.2.1 | 4 | 10/10/2026 |
| 3.2.0 | 5 | 10/10/2026 |
| 3.1.1 | 5 | 10/09/2026 |
| 3.1.0 | 4 | 10/09/2026 |
| 3.0.1 | 8 | 10/08/2026 |
| 3.0.0 | 4 | 10/08/2026 |
| 2.2.1 | 5 | 10/05/2026 |
| 2.2.0 | 6 | 10/05/2026 |
| 2.1.0 | 8 | 10/04/2026 |
| 2.0.1 | 7 | 10/04/2026 |
| 2.0.0 | 5 | 10/03/2026 |
| 1.7.0 | 4 | 10/03/2026 |