DigitalDoor.Reporting
1.14.51
See the version list below for details.
dotnet add package DigitalDoor.Reporting --version 1.14.51
NuGet\Install-Package DigitalDoor.Reporting -Version 1.14.51
<PackageReference Include="DigitalDoor.Reporting" Version="1.14.51" />
paket add DigitalDoor.Reporting --version 1.14.51
#r "nuget: DigitalDoor.Reporting, 1.14.51"
// Install DigitalDoor.Reporting as a Cake Addin #addin nuget:?package=DigitalDoor.Reporting&version=1.14.51 // Install DigitalDoor.Reporting as a Cake Tool #tool nuget:?package=DigitalDoor.Reporting&version=1.14.51
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.13.52
Register the services
services.AddReportsServices();
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
}
}
Create a PDF
To create a PDF need to manage the report ViewModel using a Handler and then use with the abtractions
byte[] pdf = await IReportAsBytes.GenerateReport(reportModel);
IReportAsBytes it's registered by services.AddReportsServices();
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. |
-
net6.0
- DigitalDoor.Reporting.Entities (>= 1.14.51)
- DigitalDoor.Reporting.Helpers (>= 1.14.50)
- itext7 (>= 8.0.2)
- itext7.bouncy-castle-adapter (>= 8.0.2)
-
net8.0
- DigitalDoor.Reporting.Entities (>= 1.14.51)
- DigitalDoor.Reporting.Helpers (>= 1.14.50)
- itext7 (>= 8.0.2)
- itext7.bouncy-castle-adapter (>= 8.0.2)
NuGet packages (4)
Showing the top 4 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 reports from code using clean architecture. Can be used in backend API, in Blazor Server, Blazor Web Assembly, MVC and any .NET Core application. |
|
DigitalDoor.Reporting.Presenters.Images
Generate reports from code using clean architecture. Can be used in backend API, in Blazor Server, Blazor Web Assembly, MVC and any .NET Core application. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
1.16.59 | 127 | 11/2/2024 | |
1.16.58 | 134 | 10/10/2024 | |
1.16.57 | 166 | 6/7/2024 | |
1.16.56 | 170 | 5/26/2024 | |
1.16.54 | 168 | 5/11/2024 | |
1.15.53 | 155 | 3/21/2024 | |
1.14.52 | 143 | 3/19/2024 | |
1.14.51 | 272 | 12/11/2023 | |
1.14.50 | 190 | 11/22/2023 | |
1.13.52 | 155 | 11/22/2023 | |
1.13.51 | 158 | 11/7/2023 | |
1.13.50 | 175 | 11/3/2023 | |
1.13.49 | 179 | 10/24/2023 | |
1.13.48 | 178 | 10/4/2023 | |
1.13.47 | 175 | 9/8/2023 | |
1.13.46 | 178 | 9/4/2023 | |
1.13.45 | 193 | 8/27/2023 | |
1.13.44 | 168 | 8/27/2023 | |
1.12.43 | 185 | 8/25/2023 | |
0.7.22 | 344 | 7/28/2022 | |
0.7.21 | 327 | 7/28/2022 |
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#