DigitalDoor.Reporting
1.18.1
dotnet add package DigitalDoor.Reporting --version 1.18.1
NuGet\Install-Package DigitalDoor.Reporting -Version 1.18.1
<PackageReference Include="DigitalDoor.Reporting" Version="1.18.1" />
<PackageVersion Include="DigitalDoor.Reporting" Version="1.18.1" />
<PackageReference Include="DigitalDoor.Reporting" />
paket add DigitalDoor.Reporting --version 1.18.1
#r "nuget: DigitalDoor.Reporting, 1.18.1"
#:package DigitalDoor.Reporting@1.18.1
#addin nuget:?package=DigitalDoor.Reporting&version=1.18.1
#tool nuget:?package=DigitalDoor.Reporting&version=1.18.1
DigitalDoor.Reporting
Using DigitalDoor Reporting to create ViewModel and use to export in PDF or use in DigitalDoor.Reporting.Blazor to preview in HTML.
How to use:
Install nuget
dotnet add package DigitalDoor.Reporting --version 1.16.57
Register the services
services.AddReportingServices();
Create a report ViewModel
Create object page setup
Setup reportSetUp = new(PageSize.A4, Orientation.Portrait);
Setup Header, Body and Footer (header and footer is not required, default all document it's a Body)
reportSetUp.Header = new Section(new Format(210, 70));
reportSetUp.Body = new Section()
{
Format = new Format()
{
Dimension = new Dimension(210, 222), //full body size
},
Row = new Row() //define size per each element to iterate
{
Dimension = new Dimension(89, 18)
}
};
reportSetUp.Footer = new Section(new Format(210, 7.3));
Add columns (elements) to each section
reportSetUp.Header.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Body.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Footer.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
Add data to the collection. Data will be loop in a foreach to render the report
List<Model> content = new List<Model>(await Repository.GetModelData());
List<ColumnData> data = new List<ColumnData>();
int row = 1; //define first row in the section
if(content.Any())
{
//header data
data.Add(new ColumnData() { Section = SectionType.Header, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
// more row data then increment row++
//body data
row = 1; //reset row
foreach(PackByTrolley item in content)
{
data.Add(new ColumnData() { Section = SectionType.Body, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
row++;
}
//footer data
row = 1; //reset row
data.Add(new ColumnData() { Section = SectionType.Footer, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
}
Full class example
public class CreateReportHandler
{
readonly IReportsOutputPort Output; //from digitalDoor.Reporting.Entities, registered by services.AddReportsServices();
readonly IGetDataRepository Repository;
public GetReportHandler(IReportsOutputPort output, IGetDataRepository repository)
{
Output = output;
Repository = repository;
}
public async ValueTask Handle()
{
Setup reportSetUp = new(PageSize.A4, Orientation.Portrait);
reportSetUp.Header.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Body.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Footer.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
List<Model> content = new List<Model>(await Repository.GetModelData());
List<ColumnData> data = new List<ColumnData>();
int row = 1; //define first row in the section
if(content.Any())
{
//header data
data.Add(new ColumnData() { Section = SectionType.Header, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
// more row data then increment row++
//body data
row = 1; //reset row
foreach(PackByTrolley item in content)
{
data.Add(new ColumnData() { Section = SectionType.Body, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
row++;
}
//footer data
row = 1; //reset row
data.Add(new ColumnData() { Section = SectionType.Footer, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
}
else
{
reportSetUp = new();
}
await Output.Handle(reportSetUp, data); //create ReportViewModel in a property IReportsOutputPort.Content
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- DigitalDoor.Reporting.Helpers (>= 1.18.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
-
net6.0
- DigitalDoor.Reporting.Helpers (>= 1.18.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
-
net8.0
- DigitalDoor.Reporting.Helpers (>= 1.18.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
-
net9.0
- DigitalDoor.Reporting.Helpers (>= 1.18.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.20)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on DigitalDoor.Reporting:
| Package | Downloads |
|---|---|
|
DigitalDoor.Reporting.Blazor
Provide a components to render,print and preview the reports Generated by DigitalDoor.Reporting with Blazor Components. Also can generate reports from code using clean architecture. |
|
|
DigitalDoor.Reporting.Extensions
Extension to simplify the Presenter Injection when use Digital Reporting. |
|
|
DigitalDoor.Reporting.Presenters.PDF
Generate PDF reports from code using clean architecture and SkiaSharp. Can be used in backend API, in Blazor Server, Blazor Web Assembly, MVC and any .NET Core application, on Windows, Linux (Docker) and macOS. |
|
|
DigitalDoor.Reporting.Presenters.Images
Generate reports as image from code using clean architecture. Can be used in backend API, in Blazor Server, Blazor Web Assembly, MVC and any .NET Core application. |
|
|
ISO9001.Core
ISO 9001 quality management microservice for multitenant ecommerce systems. Clean Architecture based and API ready. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.18.1 | 208 | 9/30/2026 |
| 1.18.0 | 172 | 9/29/2026 |
| 1.17.71 | 595 | 12/16/2025 |
| 1.17.70 | 726 | 12/15/2025 |
| 1.16.61 | 373 | 10/22/2025 |
| 1.16.60 | 394 | 6/1/2025 |
| 1.16.59 | 378 | 11/2/2024 |
| 1.16.58 | 356 | 10/10/2024 |
| 1.16.57 | 387 | 6/7/2024 |
| 1.16.56 | 416 | 5/26/2024 |
| 1.16.54 | 398 | 5/11/2024 |
| 1.15.53 | 351 | 3/21/2024 |
| 1.14.52 | 361 | 3/19/2024 |
| 1.14.51 | 480 | 12/11/2023 |
| 1.14.50 | 348 | 11/22/2023 |
| 1.13.52 | 315 | 11/22/2023 |
| 1.13.51 | 346 | 11/7/2023 |
| 1.13.50 | 316 | 11/3/2023 |
| 1.13.49 | 340 | 10/24/2023 |
| 1.13.48 | 326 | 10/4/2023 |
2026-09-30: Update DigitalDoor.Reporting.Helpers to 1.18.1.
2026-09-29: Fixed TotalPages calculation. Pagination values are added to the header when it uses TotalPages or CurrentPage. SVG images are kept as vector for the presenters.
2025-12-16: Fixed detect if use AddPageination and set correctly the values about TotalPages and CurrentPage. Update dependencies.
2025-12-15: Add support Net 10. Update dependencies.
2025-10-22: Fixed index out exception. Update dependencies.
2025-06-01: Update License and dependencies. Add support to NET 9.
2024-11-02: Update nugets and dependencies.
2024-10-10: Update nugets.
2024-05-26: Update nugets.
2024-05-11: Removed dependency from iTextSharp and moved to DigitalDoor.Presenters.PDF nuget. Remind now to use interface IReportAsBytes must be have DigitalDoor.Reporting.Presenters.PDF 1.16.54. Update nugets last version.
2024-03-19: Update nugets.
2024-03-21: Add radius property for the borders. Fixed image borders. Fixed angle in empty containers. Improve generate PDF speed.
2024-03-19: Update nugets.
2024-03-19: Update nugets.
2023-12-12: More improvement PDF creation time.
2023-12-11: Add opacity in the layers/item data. Fixed total pages when PDF is generated. Improved PDF creation time by 12% less time.
2023-11-22: Update frameworks target to NET 6 and NET 8. Add pagination in the PDF. Update nugets to last version iText 8.0.2, DigitalDoor.Reporting.Entities 1.14.50 and DigitalDoor.Reporting.Helpers 1.14.50.
2023-11-07: Improved height management in text.
2023-11-03: Fixed image positions when has rotation.
2023-10-24: Fix Z-Index and Background Transparent
2023-10-04: Fixed issue with borders, background colour and left position. Update nuget dependencies.
2023-09-08: Add interface IReportFont can get a font in bytes[] to use your own Font in the report.
2023-09-04: Fixed column jump to render correctly all pages. Improved how to manage angels when have rotations.
2023-08-28: Add Register services extension method. Hide implementation to outside. Implement IReportAsBytes in a controller PDFReportController to get directly the PDF Bytes in only one injection.
2023-08-10: Add Create PDF Using IText7 C#