README.md 2.2 KB
Newer Older
1
# PDFGenerator
Julia Dürselen's avatar
Julia Dürselen committed
2

3
In diesem Repository geht es um die Generierung von PDF-Dokumenten über einen Microservice via Web API. Eine webbasierte Benutzeroberfläche wird zusätzlich zum Testen von Anfragen mit Dateneingabe mit Hilfe des _Swagger_-Tools bereitgestellt.
4

5
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 erstellen. Vom Webserver wird dann nach aufgerufenem URI das entsprechende PDF-Dokument generiert und als byte Array zurückgegeben.
6
7

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.
8

Nuno Alves's avatar
Nuno Alves committed
9
## Einstellung
10

Nuno Alves's avatar
Nuno Alves committed
11
- TargetFramework: .NET Core 3.1
12
13
14
- iText7 (7.1.12)
- Swashbuckle.AspNetCore (5.6.3)
- NLog (4.7.5)
15

16
17
## Datenmodelle

18
Zu den Bestandteilen eines PDF-Dokuments zählen je nach Datenmodell möglicherweise ein Deckblatt, ein Vorwort, eine Kopf- und/oder Fußzeile, Kapitel, Abschnitte sowie ein Anhang. Im Folgenden wird ein typisches Datenmodell-Muster angezeigt:
19
20

```csharp
21
public class PDFDocument
22
{
23
24
25
26
27
28
29
    public DataType Header { get; set; }
    public DataType Footer { get; set; }
    public DataType Cover { get; set; }
    public DataType Preface { get; set; }
    public DataType Chapters { get; set; }
    // (...)
    public DataType Appendix { get; set; }
30
31
32
}
```

33
Die Datenmodelle befinden sich unter `pdf-generator\Models`.
34

35
## Generierungsablauf
36

37
Zur Generierung des jeweiligen PDF-Dokuments liegt ein _Controller_ vor, in dem sich die vom _WebClient_ aufgerufene Methode befindet. Dabei wird ein _Renderer_ mit dem eingegebenen befüllten Datenmodell aus dem Request-Body instantiiert, anhand dessen Methode _Render()_ das PDF-Dokument erstellt werden kann. Dabei wird das Datenmodell-Objekt verwendet, durchiteriert und dadurch jeder Bestandteil ins Dokument geschrieben.
38

39
Zuletzt wird das fertige Dokument als byte-Array zurückgegeben.