Files
PDFTool/README.md
T
SvenandClaude Fable 5 c95cd99be7 REST-API in das eigenständige Projekt "PDF Service" ausgelagert
InvoiceSigningController entfernt; die ZUGFeRD-Services bleiben für die
Weboberfläche erhalten. Multipart-Konfiguration entfällt (kein Upload mehr).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 11:22:40 +02:00

65 lines
2.5 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
```
## REST-API
Die REST-API (`/api/invoices/sign` und `/api/invoices/validate`) ist in das
eigenständige Projekt **PDF Service** ausgelagert
(`../PDF Service`, Port 8084). Dieses Tool enthält nur noch die Weboberfläche;
Rechnungen entstehen hier ausschließlich aus gespeicherten Templates.
## Architektur
- [ZugferdService](src/main/java/de/assecutor/pdftool/zugferd/ZugferdService.java) — Kernlogik:
PDF → PDF/A-3 + EN16931-XML (Mustangproject), Validierung, Verpackung als ZIP.
Nicht-PDF/A-Eingaben (der Normalfall) werden tolerant konvertiert.
- [ZugferdValidationService](src/main/java/de/assecutor/pdftool/zugferd/ZugferdValidationService.java) — Mustang-Validator
(XSD + Schematron + veraPDF), liefert Status und XML-Prüfbericht
- [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
```
[ZugferdServiceTest](src/test/java/de/assecutor/pdftool/zugferd/ZugferdServiceTest.java) erzeugt ein
Test-PDF, konvertiert es und prüft, dass das ZIP ein PDF/A-3 mit eingebettetem
`factur-x.xml` (EN16931-Profil) enthält.