- PdfServiceClient ruft POST /api/invoices/sign auf (Basis-URL über PDF_SERVICE_URL, Standard http://localhost:8084); ZIP, Dateiname und Validierungsergebnis kommen aus der Response - zugferd-Paket samt Test entfernt, Mustang-Abhängigkeiten aus der pom.xml gestrichen - README und .env.example entsprechend angepasst Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
# PDF Tool — ZUGFeRD E-Rechnungs-Konverter
|
|
|
|
Spring Boot + Vaadin Flow Anwendung, die aus gespeicherten Rechnungstemplates
|
|
**rechtskonforme ZUGFeRD-E-Rechnungen** erzeugt (PDF/A-3 mit eingebettetem EN16931-XML,
|
|
Profil EN 16931 / Factur-X), das Ergebnis mit dem **Mustang-Validator** prüft und als
|
|
**ZIP-Datei** bereitstellt.
|
|
|
|
Verwendet wird [Mustangproject](https://www.mustangproject.org/) (Apache-2.0), die
|
|
Open-Source-Referenzimplementierung von ZUGFeRD, inklusive des Mustang-Validators
|
|
(XSD + EN16931-Schematron für das XML, veraPDF für die PDF/A-3-Konformität).
|
|
|
|
> **Hinweis zur Rechtskonformität:** ZUGFeRD "signiert" nicht kryptografisch. Rechtskonform
|
|
> im Sinne der deutschen B2B-E-Rechnungspflicht (§ 14 UStG, seit 01.01.2025) ist eine Rechnung
|
|
> im strukturierten EN16931-Format — genau das erzeugt dieses Tool. Eine qualifizierte
|
|
> elektronische Signatur ist seit 2011 nicht mehr erforderlich.
|
|
|
|
## Voraussetzungen
|
|
|
|
- Java 21+
|
|
- Maven 3.9+
|
|
|
|
## Starten
|
|
|
|
```bash
|
|
mvn spring-boot:run
|
|
```
|
|
|
|
Die Weboberfläche ist dann unter <http://localhost:8083> erreichbar:
|
|
Rechnungstemplate auswählen, Rechnungsdaten ausfüllen, "E-Rechnung erzeugen" klicken —
|
|
das ZIP wird automatisch heruntergeladen.
|
|
|
|
Produktions-Build:
|
|
|
|
```bash
|
|
mvn clean package -Pproduction
|
|
java -jar target/pdf-tool-1.0.0-SNAPSHOT.jar
|
|
```
|
|
|
|
## PDF Service
|
|
|
|
Die ZUGFeRD-Umwandlung (PDF/A-3 + EN16931-XML, Mustangproject) übernimmt das
|
|
eigenständige Projekt **PDF Service** (`../PDF Service`, Port 8084). Dieses Tool
|
|
rendert die Rechnung aus dem Template und ruft dann dessen REST-API
|
|
(`POST /api/invoices/sign`) auf — der Service muss dafür laufen. Die Basis-URL
|
|
ist über `PDF_SERVICE_URL` konfigurierbar (Standard `http://localhost:8084`).
|
|
|
|
## Architektur
|
|
|
|
- [TemplatePdfService](src/main/java/de/assecutor/pdftool/template/TemplatePdfService.java) — rendert
|
|
die Canvas-Templates (JSON aus MongoDB) über iText html2pdf zu einem PDF
|
|
- [PdfServiceClient](src/main/java/de/assecutor/pdftool/pdfservice/PdfServiceClient.java) — ruft den
|
|
PDF Service auf, der daraus die ZUGFeRD-E-Rechnung als ZIP erzeugt
|
|
- [MainView](src/main/java/de/assecutor/pdftool/ui/MainView.java) — Vaadin-Weboberfläche
|
|
- [InvoiceMetadata](src/main/java/de/assecutor/pdftool/invoice/InvoiceMetadata.java) — DTO für die Rechnungsdaten
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
mvn test
|
|
```
|
|
|
|
Die Tests decken das Template-Rendering ([TemplatePdfServiceTest](src/test/java/de/assecutor/pdftool/template/TemplatePdfServiceTest.java),
|
|
[TemplateVariablesTest](src/test/java/de/assecutor/pdftool/template/TemplateVariablesTest.java)) und die
|
|
USt-IdNr.-Validierung ab; die ZUGFeRD-Umwandlung wird im Projekt PDF Service getestet.
|