Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
Majorsilence Reporting, .NET report designer, viewer, and pdf creation.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Majorsilence Reporting is an open-source .NET reporting framework for building, rendering, and viewing RDL-based reports — a self-hosted alternative to SQL Server Reporting Services (SSRS) and Crystal Reports. It targets .NET 8 and .NET 10, renders reports to PDF and other formats from a variety of data sources, and ships both a fluent C# API for generating reports and a Windows drag-and-drop visual designer.
dotnet add package Majorsilence.Reporting.RdlCreator.SkiaSharp
dotnet add package Majorsilence.Reporting.RdlEngine.SkiaSharp
dotnet add package Majorsilence.Reporting.RdlCri.SkiaSharp
The core engine, report designer, and report viewer all support Linux, macOS, and Windows — the designer and viewer are built on Majorsilence.Forms, a cross-platform WinForms-API-compatible framework. Existing System.Windows.Forms host apps can still embed them as real WinForms controls via Majorsilence.Forms.WinForms's ToWinFormsControl(), WPF, Avalonia, Uno, GTK 4 and terminal hosts follow the same pattern (see Hosting in your UI framework).
If you have any question about Majorsilence Reporting or want to discuss it, a discussion group is available here:
https://github.com/majorsilence/Reporting/discussions
See the projects wiki.
See the downloads page.
Alternatively if you want keep up with the latest version you can always use Git
git clone https://github.com/majorsilence/Reporting.git
Add the NuGet packages above to your project.
If running on linux install the required fonts.
sudo apt install ttf-mscorefonts-installer
Fonts shipped with your app, or kept in a folder the renderer does not scan, can be registered once at startup, before rendering. Registrations are process-wide.
using Majorsilence.Reporting.Rdl;
PdfFonts.RegisterFont("MICR Encoding", regular: "/app/fonts/MICREncoding.ttf");
PdfFonts.RegisterFontDirectory("/app/fonts"); // each font under the family it declares
PdfFonts.AddFallbackFamily("Noto Sans CJK JP"); // tried before the built-in fallbacks
A family you register replaces an installed one of the same name. Without code (RdlCmd, RdlMcp), set MAJORSILENCE_PDF_FONT_DIRS to a list of font folders separated by : (; on Windows).
You are now ready to create and generate reports.
See Database Providers.
using Majorsilence.Reporting.RdlCreator;
// One time per app instance
RdlEngineConfig.RdlEngineConfigInit();
string dataProvider = "[PLACEHOLDER/Json/Microsoft.Data.SqlClient/MySQL.NET/Firebird.NET 2.0/Microsoft.Data.Sqlite/PostgreSQL";
var create = new Majorsilence.Reporting.RdlCreator.Create();
using var report = await create.GenerateRdl(dataProvider,
connectionString,
"SELECT CategoryID, CategoryName, Description FROM Categories",
pageHeaderText: "DataProviderTest TestMethod1");
string filepath = System.IO.Path.Combine(Environment.CurrentDirectory, "PLACEHOLDER.pdf");
using var ofs = new Majorsilence.Reporting.Rdl.OneFileStreamGen(filepath, true);
await report.RunGetData(null);
await report.RunRender(ofs, Majorsilence.Reporting.Rdl.OutputPresentationType.PDF);
using Majorsilence.Reporting.RdlCreator;
// One time per app instance
RdlEngineConfig.RdlEngineConfigInit();
var document = new Majorsilence.Reporting.RdlCreator.Document()
{
Description = "Sample report",
Author = "John Doe",
PageHeight = "11in",
PageWidth = "8.5in",
//Width = "7.5in",
TopMargin = ".25in",
LeftMargin = ".25in",
RightMargin = ".25in",
BottomMargin = ".25in"
}
.WithPage((page) =>
{
page.WithHeight("10in")
.WithWidth("7.5in")
.WithText(new Text
{
Name = "TheSimplePageText",
Top = ".1in",
Left = ".1in",
Width = "6in",
Height = ".25in",
Value = new Value { Text = "Text Area 1" },
Style = new Style { FontSize = "12pt", FontWeight = "Bold" }
});
});
using var fileStream = new FileStream("PLACEHOLDER.pdf", FileMode.Create, FileAccess.Write);
await document.Create(fileStream);
note: Notice the namespace and type difference of Majorsilence.Reporting.RdlCreator.Report for creating new rdl reports versus Majorsilence.Reporting.Rdl.Report for running a report.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗