ToolUp.Reporting.Core
0.22.0
Prefix Reserved
dotnet add package ToolUp.Reporting.Core --version 0.22.0
NuGet\Install-Package ToolUp.Reporting.Core -Version 0.22.0
<PackageReference Include="ToolUp.Reporting.Core" Version="0.22.0" />
<PackageVersion Include="ToolUp.Reporting.Core" Version="0.22.0" />
<PackageReference Include="ToolUp.Reporting.Core" />
paket add ToolUp.Reporting.Core --version 0.22.0
#r "nuget: ToolUp.Reporting.Core, 0.22.0"
#:package ToolUp.Reporting.Core@0.22.0
#addin nuget:?package=ToolUp.Reporting.Core&version=0.22.0
#tool nuget:?package=ToolUp.Reporting.Core&version=0.22.0
ToolUp.Reporting
Companion package providing typed-template document generation for applications built on ToolUp.Platform. Ships the IReportRenderer interface, default MarkdownRenderer + HtmlRenderer (zero-deps), IReportTemplateStore over IEntityStore, the ReportApi ToolUp.Remoting endpoint, and ReportingCompose (registers the renderer registry + API handler against a ServerApp).
Each output format that needs a real renderer (PDF / DOCX / XLSX) lives in its own sub-companion under src/Reporting/ so a deployment that only needs PDF doesn't pay for the OpenXml dep, and vice versa. Pptx is the exception — deck output is served by a downstream document-emission tier rather than by a renderer here; see Deck export below.
Apache-2.0; part of the ToolUp Platform SDK.
Why a separate companion
Two reasons it doesn't live in ToolUp.Platform:
- Vendor SDK weight. PDF / DOCX / XLSX renderers pull in QuestPDF or DocumentFormat.OpenXml; deployments that don't need document generation shouldn't pay for those deps.
- Audit + storage integration. The renderer composes with
IEntityStore(template persistence),IDataObjectStore(rendered-blob storage with versioning), andIAuditLog(ReportRenderedevents). Keeping that wiring inside a companion (rather than threading it into the core SDK) preserves the "core ships only opinion-light substrate" principle.
Activation
open ToolUp.Reporting
ServerApp.empty
|> ServerApp.addModules [ /* your modules */ ]
|> ReportingServerApp.run
ReportingServerApp.run is a flat superset of ServerApp.run — every existing capability passes through, plus the reporting endpoints and renderer registry.
Built-in renderers
MarkdownRenderer— pure F#, zero deps. Templates use{{key}}placeholders;{{#each items}} … {{/each}}for tables.HtmlRenderer— pure F# +System.Web.HttpUtility.HtmlEncode. Same placeholder syntax; values HTML-encoded by default.
Sub-companions (separate NuGets)
ToolUp.Reporting.Pdf— QuestPDF-backed (community-licensed under $1M revenue/yr).ToolUp.Reporting.Docx— DocumentFormat.OpenXml.ToolUp.Reporting.Xlsx— DocumentFormat.OpenXml. Includes the cell-address-map binding mode (Map<CellAddress, ExcelCellValue>shape that writes values directly into specific cells without template-side{{key}}markup) — load-bearing for the Excel-to-ToolUp converter portal's runtime export path.
Each sub-companion ships in its own NuGet so deployments compose only what they need. There is no ToolUp.Reporting.Pptx, and there will not be one — see below.
Deck export
TemplateFormat enumerates Pptx, and nothing here renders it. A render request for that format refuses with the typed RenderError.FormatServedByDeckTier, which is deliberately distinct from NoRendererForFormat: there is no package to add. Deck output is produced by a downstream document-emission tier that reads the deployment's exported result set (narrative + fact refs + provenance) and emits typed deck parts — a useful deck being a regenerable projection of governed results rather than a rendered template.
This companion's contribution to that tier is the chart-artifact handoff (ChartArtifact): the deployment's own deterministic chart grammar, exposed as content-hashed, provenance-stamped embeddable artifacts. Full rationale and the composition shape: docs/platform/reporting.md.
Licensed under Apache-2.0. Part of the ToolUp Platform SDK — see github.com/ToolUp-Forge/toolup-forge for full documentation.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- ToolUp.Platform.Core (>= 0.22.0)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on ToolUp.Reporting.Core:
| Package | Downloads |
|---|---|
|
ToolUp.Reporting.HtmlPdf
ToolUp.Reporting HTML→PDF rendering sub-companion — renders HTML report templates (print CSS respected: @page size/margins, page breaks, headers/footers) to paginated PDF via Playwright / headless Chromium, implementing IReportRenderer and registering through the standard RendererRegistry path. Placeholder semantics inherited from the shipped HtmlRenderer. Requires Chromium in the deployment image — see the README. |
|
|
ToolUp.Reporting.Server
ToolUp.Reporting Server — IReportTemplateStore (over IEntityStore), in-process RendererRegistry, ReportApi Fable.Remoting interface + handler factory, ReportingCompose. Depends on ToolUp.Platform.Server + ToolUp.Reporting.Core. |
|
|
ToolUp.Reporting.Xlsx
ToolUp.Reporting XLSX rendering sub-companion — fills .xlsx report templates in two binding modes: {{key}} placeholder tokens in cell text, and a cell-address map ("Sheet1!B7" keys) that writes values directly into named cells of a visually-authored template, preserving each target cell's number formatting. Whole-cell numeric tokens write native numeric cells; formulas are left untouched and the workbook is marked for full recalculation on open. Implements IReportRenderer and registers through the standard RendererRegistry path. |
|
|
ToolUp.Reporting.Docx
ToolUp.Reporting DOCX rendering sub-companion — fills .docx report templates ({{key}} placeholder tokens in document text) through ToolUp.OpenXml's structural model, so styles, numbering, tables and untouched parts round-trip intact. Implements IReportRenderer and registers through the standard RendererRegistry path. Table-kind placeholders occupying a whole paragraph render as native Word tables. |
GitHub repositories
This package is not used by any popular GitHub repositories.