Erstellen eines PDF-Berichts in JetBrains Rider (C#) unter Ubuntu 22.04.1 LTS

Erstellen eines PDF-Berichts in JetBrains Rider (C#) unter Ubuntu 22.04.1 LTS

In diesem Artikel werfen wir einen Blick auf die Welt der .NET-Plattform in Ubuntu 22.04.1 LTS, ohne Microsoft Visual Studio zu verwenden, da sie unter Linux nicht installiert werden kann, und erstellen einen Bericht, der ins PDF-Format exportiert werden kann. Das aktuelle Vergleichsprodukt von Visual Studio ist natürlich JetBrains Rider. Es ist eine von JetBrains entwickelte plattformübergreifende integrierte Softwareentwicklungsumgebung für die .NET-Plattform. Sie unterstützt die Programmiersprachen C#, VB.NET und F#.

Wir werden hier nicht diskutieren, welche IDE besser oder schlechter ist. Lassen Sie uns also einfach einen PDF-Bericht/ein Dokument aus JetBrains Rider mit FastReport .NET erstellen, aufbauen und exportieren.

Was brauchen Sie vorerst? Sie müssen mindestens die JetBrains Rider IDE auf Ihrem PC installiert haben und auch die Besonderheiten von Linux berücksichtigen und zusätzliche Einstellungen vornehmen.

Zuerst benötigen wir für Linux zusätzliche Bibliotheken, die möglicherweise nicht standardmäßig vorinstalliert sind:

Linux-Einstellung am Beispiel von Ubuntu 22.04.1 LTS:

1. Konsole öffnen;
2. apt-get aktualisieren und Pakete installieren:

Als nächstes erstellen Sie eine neue Lösung, indem Sie «New Solution» wählen.

IDE JetBrains Rider Begrüßungsformular

Der nächste Schritt ist die Projekt-Einstellungen. Wählen Sie unter .NET/.NET Core den Projekttyp „Console Application“. Benennen Sie anschließend das Projekt, zum Beispiel „ReportPDF_Core_ConsoleApp“. Klicken Sie dann auf Console Application, Sprache C#, NET 6.0 Framework.

Projekt-Konfigurationsformular vor der Erstellung

Beginnen Sie mit dem Hinzufügen eines einfachen Beispieldatensatzes für Ihren Bericht in dem Anwendungscode. Fügen Sie dazu in Program.cs folgendes hinzu:

 using System.Data;

Fügen Sie als Nächstes die Variable hinzu:

// creating a dataset set 
DataSet dataSet = new DataSet();

Fügen Sie die CreateDataSet Funktion, in der der Datensatz erstellt und ausgefüllt wird:

void CreateDataSet()
{
// create a simple dataset with one table
// create a simple dataset
dataSet = new DataSet();
 
// create a table
DataTable table = new DataTable();
table.TableName = "Employees";
// adding a table to the dataset
dataSet.Tables.Add(table);
 
// adding data to a table
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Rows.Add(1, "Andrew Fuller");
table.Rows.Add(2, "Nancy Davolio");
table.Rows.Add(3, "Margaret Peacock");
}

Und fügen Sie einen Aufruf der CreateDataSet Funktion hinzu:

//creating a dataset object
DataSet dataSet = new DataSet();
CreateDataSet();

Was ist der einfachste Weg, FastReport .NET in JetBrains Rider zum Laufen zu bringen? Verwenden Sie unsere Private NuGet-server Fast Reports.

Dieser Artikel beschreibt, wie Sie NuGet-Pakete nach der Beschaffung von FastReport .NET hinzufügen können. Hier ist eine kurze Anleitung für Sie, damit Sie nicht zu einem anderen Artikel gehen müssen. Klicken Sie auf die Registerkarte NuGet am unteren Rand der IDE und klicken Sie auf die Registerkarte Sources.

NuGet-Konfigurationsformular

Fügen Sie nun ein neues Repository hinzu, indem Sie auf "+" klicken und die erforderlichen Daten eingeben:

- Name - Quellenname ohne Leerzeichen (z.B., FastReport);
- URL - https://nuget.fast-report.com/api/v3/index.json;
- User – E-Mail von Ihrem Fast Reports Konto;
- Password - Passwort vom Fast Reports Konto.

Formular zum Hinzufügen eines NuGet-Repositorys

Sie werden sehen, dass das entsprechende Repository erschienen ist:

Hinzugefügtes FastReport-NuGet Repository

Wir werden nun das FastReport Core-Paket installieren. Gehen Sie dazu auf die Registerkarte Packages und filtern Sie die Pakete nach FastReport-Repository. Und natürlich installieren Sie das gefundene Paket.

Installieren des FastReport.Core NuGet-Pakets

Wenn die Installation erfolgreich abgeschlossen ist, werden Sie in einer Benachrichtigung darüber informiert.

Benachrichtigung über die erfolgreiche Installation des FastReport.Core NuGet-Pakets

Als Nächstes erstellen Sie eine Vorlage aus dem Code, indem Sie die folgenden Schritte ausführen. Fügen Sie anschließend zu Program.cs folgendes hinzu:

using System.Drawing;
using FastReport;
using FastReport.Export.Pdf;
using FastReport.Utils;

Fügen Sie als Nächstes CreateDataSet zu Program.cs unten hinzu:

Report report = new Report();
CreateReportTemplate();
ExportToPDF();

Fügen Sie dann die Funktion zum Erstellen einer Berichtsvorlage CreateReportTemplate hinzu:

void CreateReportTemplate()
{
 // adding a report page
 ReportPage page = new ReportPage();
 
 // creating a date band
 DataBand data = new DataBand();
 PageHeaderBand dataText = new PageHeaderBand();
 
 //creating a header
 ReportTitleBand titleBand = new ReportTitleBand();
 TextObject employeeIdText = new TextObject();
 TextObject employeeNameText = new TextObject();
 TextObject idText = new TextObject();
 TextObject nameText = new TextObject();
 TextObject titleText = new TextObject();
 //registering the data source
 report.RegisterData(dataSet);
 //enabling on the data table
 report.GetDataSource("Employees").Enabled = true;
 //adding a page to the template
 report.Pages.Add(page);
 // add to the page: data,data Text, titleBand
 // and set the unique name of the page
 page.AddChild(data);
 page.AddChild(dataText);
 page.AddChild(titleBand);
 page.CreateUniqueName();
 // set the unique name titleBand
 // and set the band settings
 titleBand.CreateUniqueName();
 titleBand.Height = Units.Centimeters * 1.5f;
 titleText.Bounds = new RectangleF(300, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 titleText.Text = "Employees";
 titleText.Font = new Font("Arial", 14, FontStyle.Bold);
 titleText.VertAlign = VertAlign.Center;
 
 // set the unique name data
 // and set the data settings
 data.CreateUniqueName();
 data.DataSource = report.GetDataSource("Employees");
 data.Height = Units.Centimeters * 0.5f;
 
 // set a unique dataText name
 // and set the dataText settings
 dataText.CreateUniqueName();
 dataText.Height = Units.Centimeters * 0.8f;
 
 // setting the unique name employeeIdText
 // and set the employeeIdText, idText settings
 employeeIdText.Parent = data;
 employeeIdText.CreateUniqueName();
 employeeIdText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 idText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 idText.Text = "ID";
 employeeIdText.Text = "[Employees.ID]";
 
 // set the unique name employeeNameText
 // and set the employeeNameText, nameText settings
 employeeNameText.Parent = data;
 employeeNameText.CreateUniqueName();
 employeeNameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 nameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 nameText.Text = "Name";
 employeeNameText.Text = "[Employees.Name]";
 
 // add on data band: employeeIdText, employeeNameText
 data.AddChild(employeeIdText);
 data.AddChild(employeeNameText);
 
 // add on dataText band: idText, nameText
 dataText.AddChild(idText);
 dataText.AddChild(nameText);
 
 // add on titleBand band: itleText
 titleBand.AddChild(titleText);
}

Fügen Sie als Nächstes die Funktion zum Erstellen einer Berichtsvorlage „ExportToPDF“ hinzu und nennen Sie den Berichtsexport "Bericht.pdf":

void ExportToPDF()
{
 // running the report
 report.Prepare();
 // creating an export instance
 PDFExport export = new PDFExport();
 report.Export(export, "test.pdf");
 // disposing the resources used by the report
 report.Dispose(); 
}

Starten Sie die Konsolenanwendung. Wenn die Meldung „Process finished with exit code 0“ kommt, haben Sie alles richtig gemacht. Öffnen Sie dann den Bericht in unserem Fall unter /home/alex/RiderProjects/ReportPDF_Core_ConsoleApp/ReportPDF_Core_ConsoleApp/bin/Debug/net6.0/test.pdf:

Ergebnis des Exportierens des Berichts in PDF

So haben wir einen einfachen Bericht/ein einfaches Dokument im PDF-Format, der/das aus einem Datensatz erstellt worden ist.

In diesem Artikel haben wir die Kombination aus JetBrains Rider (C#) + .NET Core + Console Application + FastReport .NET Core + Linux (Ubuntu 22.04.1 LTS) betrachtet und einen Bericht aus einem PDF-Datensatz erstellt. Und natürlich haben wir uns davon überzeugt, dass die .NET-Plattform problemlos ohne Microsoft Visual Studio verwendet werden kann, da Linux es einfach nicht hat.

Wir haben natürlich nicht die Erstellung einer GUI-Anwendung unter Linux betrachtet, die beispielsweise mit dem Mono-Framework möglich ist, aber auf unserer Website finden Sie Artikel dazu.

Vollständige Programmliste

using System.Data;
using System.Drawing;
using FastReport;
using FastReport.Export.Pdf;
using FastReport.Utils;
 
//Erstellen eines Datensatzobjektes 
DataSet dataSet = new DataSet();
CreateDataSet();
// Erstellen eines Berichtobjektes
Report report = new Report();
 
CreateReportTemplate();
ExportToPDF();
 
void CreateReportTemplate()
{
 // Hinzufügen einer Berichtsseite
 ReportPage page = new ReportPage();
 
 // Erstellen von DataBand
 DataBand data = new DataBand();
 PageHeaderBand dataText = new PageHeaderBand();
 
 //Erstellen der Kopfzeile
 ReportTitleBand titleBand = new ReportTitleBand();
 TextObject employeeIdText = new TextObject();
 TextObject employeeNameText = new TextObject();
 TextObject idText = new TextObject();
 TextObject nameText = new TextObject();
 TextObject titleText = new TextObject();
 //Erfassung der Datenquelle
 report.RegisterData(dataSet);
 //Einfügen der Datentabelle
 report.GetDataSource("Mitarbeiter").Enabled = true;
 // Hinzufügen einer Seite zur Vorlage
 report.Pages.Add(page);
 // Hinzufügen zur Seite: data,dataText, titleBand
 // und Vergabe eines eindeutigen Seitennamens 
 page.AddChild(data);
 page.AddChild(dataText);
 page.AddChild(titleBand);
 page.CreateUniqueName();
 // Vergabe eines eindeutigen Namens titleBand
 // und Festlegung der Band- Einstellungen 
 titleBand.CreateUniqueName();
 titleBand.Height = Units.Centimeters * 1.5f;
 titleText.Bounds = new RectangleF(300, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 titleText.Text = "Mitarbeiter";
 titleText.Font = new Font("Arial", 14, FontStyle.Bold);
 titleText.VertAlign = VertAlign.Center;
 
 // Vergabe eines eindeutigen data-Namens 
 // und Festlegung der data- Einstellungen
 data.CreateUniqueName();
 data.DataSource = report.GetDataSource("Mitarbeiter");
 data.Height = Units.Centimeters * 0.5f;
 
 // Vergabe eines eindeutigen dataText-Namens 
 // und Festlegung der dataText- Einstellungen
 dataText.CreateUniqueName();
 dataText.Height = Units.Centimeters * 0.8f;
 
 // Vergabe eines eindeutigen employeeIdText- Namens
 // und Festlegung der employeeIdText, idText- Einstellungen
 employeeIdText.Parent = data;
 employeeIdText.CreateUniqueName();
 employeeIdText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 idText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 idText.Text = "ID";
 employeeIdText.Text = "[Mitarbeiter.ID]";
 
 // Vergabe eines eindeutigen employeeNameText- Namens
 // und Festlegung der employeeNameText, nameText- Einstellungen
 employeeNameText.Parent = data;
 employeeNameText.CreateUniqueName();
 employeeNameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 nameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);
 nameText.Text = "Name";
 employeeNameText.Text = "[Mitarbeiter.Name]";
 
 // Ergänzung von data Band: employeeIdText, employeeNameText
 data.AddChild(employeeIdText);
 data.AddChild(employeeNameText);
 
 // Ergänzung von dataText Band: idText, nameText
 dataText.AddChild(idText);
 dataText.AddChild(nameText);
 
 // Ergänzung von titleBand: itleText
 titleBand.AddChild(titleText);
}
 
void ExportToPDF()
{
 report.Prepare();
 PDFExport export = new PDFExport();
 report.Export(export, "test.pdf");
 report.Dispose(); 
}
 
void CreateDataSet()
{
 // Erstellen eines einfachen Datensatzes mit einer Tabelle
 
 // Erstellen eines einfachen Datensatzes
 dataSet = new DataSet();
 
 // Erstellen einer Tabelle
 DataTable table = new DataTable();
 table.TableName = "Mitarbeiter";
 // Hinzufügen einer Tabelle zum Datensatz
 dataSet.Tables.Add(table);
 
 // Hinzufügen von Daten zu einer Tabelle
 table.Columns.Add("ID", typeof(int));
 table.Columns.Add("Name", typeof(string));
 table.Rows.Add(1, "Andrew Fuller");
 table.Rows.Add(2, "Nancy Davolio");
 table.Rows.Add(3, "Margaret Peacock");
}
Fast Reports
  • 800-985-8986 (Englisch, die USA)
  • +4930568373928 (Deutsch)
  • +55 19 98147-8148 (Portugiesisch)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314

© 1998-2024 Fast Reports Inc.
Trustpilot