Commit 127e91b3 authored by Nuno Alves's avatar Nuno Alves
Browse files

Merge branch 'feature/edit-readme' into 'master'

From feature/edit-readme into master

See merge request datencockpit-open/pdf-generator!8
parents 89d79da2 e35168e6
Pipeline #391281 passed with stages
in 47 seconds
# PDFGenerator
In diesem Repository geht es um die Generierung von PDF-Dokumenten über Microservices via Web-Api. Eine WebUi wird zusätzlich zum Testen von Anfragen mit Dateneingabe bereitgestellt.
In diesem Repository geht es um die Generierung von PDF-Dokumenten über einen Microservice via Web API. Eine WebUi wird zusätzlich zum Testen von Anfragen mit Dateneingabe bereitgestellt.
Dies Web Api generiert entweder einen Evaluationsbericht oder ein Factsheet je nach aufgerufenem URI und gibt das PDF-Dokument als byte Array zurück.
Grundsätzlich werden befüllte Datenmodelle über einen Webservice an einen PDFGenerator Microservice gesendet, der dafür sorgt, PDF-Dateien aus den empfangengen Datenmodellen zu erzeugen. Vom Webserver wird entweder ein Evaluationsbericht oder ein Factsheet je nach aufgerufenem URI generiert und das entsprechende PDF-Dokument als byte Array zurückgegeben.
Der Microservice-Server Web API widmet sich der Generierung von Pdf-Dokumenten anhand der verwendeten _iText7_-Bibliothek. _iText_ ist eine freie Programmbibliothek zur Erzeugung und Bearbeitung von PDF-Dateien mittels der Programmiersprachen _Java_ oder _C#_, deren Software unter der [GNU Affero General Public License](https://de.wikipedia.org/wiki/GNU_Affero_General_Public_License) (AGPL) vertrieben wird.
## Einstellung
- TargetFramework: .NET Core 3.1
- PDF Library: iText7 (Version="7.1.12")
## Datenmodelle
### Datenmodell für den Evaluationsbericht
Zu den Abschnitten des Evaluationsberichts zählen das Deckblatt (_Cover_), der Vorwort (_Preface_), allgemeine Angaben zu den Studiengängen (_CourseInformationTables_), allgemeine Informationen (_CourseGeneralInformation_), Bewertung von festgelegten Zielen und KPIs (_EvaluationResults_) und der Anhang (_Appendix_). Dementsprechend besteht das Datenmodell aus den folgenden Teildatenstrukturen:
```csharp
public class EvaluationReport
{
public PDFCover Cover { get; set; }
public PDFPreface Preface { get; set; }
public PDFCourseInformationTables CourseInformationTables { get; set; }
public PDFCourseGeneralInformation CourseGeneralInformation { get; set; }
public PDFEvaluationResults EvaluationResults { get; set; }
public PDFAppendix Appendix { get; set; }
}
```
Dieses Datenmodell befindet sich unter `pdf-generator\Models\EvaluationReport.cs`.
### Datenmodell für das Factsheet
Text
## Generierung des Evaluationsberichts
Als Erstes wird ein _EvaluationReportRenderer_ mit dem EvaluationReport-Inhalt aus dem Request-Body instantiiert, der für die Erstellung des PDF-Dokuments mit dem zugehörigen Inhalt zuständig ist.
Mittels _RenderSections_ wird danach jeder einzelner Abschnitt ins Dokument geschrieben. Da das Inhaltsverzeichnis als letzter Abschnitt gerendert wird und direkt hinter dem Deckblatt liegen soll, werden die Seiten anschließend umsortiert (_MoveTocToFront_). Als Nächtes wird eine Kopfzeile fürs ganze Dokument geschrieben (_AddHeader_).
Zuletzt wird das Dokument als byte-Feld zurükgegeben.
Zuletzt wird das Dokument als byte-Array zurückgegeben.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment