Biblioteka do generowania wizualizacji PDF oraz HTML faktur oraz UPO na podstawie plików XML.
Biblioteka zawiera następujące funkcjonalności:
- Generowanie wizualizacji PDF faktur
- Generowanie wizualizacji HTML faktur
- Generowanie wizualizacji PDF UPO
-
Zainstaluj Node.js w wersji 22.14.0
Możesz pobrać Node.js z oficjalnej strony: https://nodejs.org -
Sklonuj repozytorium i przejdź do folderu projektu:
git clone https://github.com/appunite/ksef-pdf-generator.git cd ksef-pdf-generator -
Zainstaluj zależności:
npm install
-
Uruchom aplikację:
npm run dev
Aplikacja uruchomi się domyślnie pod adresem: http://localhost:5173/
- Jak zbudować bibliotekę produkcyjnie:
npm run build
- Po uruchomieniu aplikacji przejdź do Wygeneruj wizualizacje faktury PDF.
- Wybierz plik XML zgodny ze schemą FA(1), FA(2) lub FA(3).
- Przykładowy plik znajduje się w folderze:
examples/invoice.xml - Po wybraniu pliku, PDF zostanie wygenerowany.
- Po uruchomieniu aplikacji przejdź do Wygeneruj wizualizacje UPO PDF.
- Wybierz plik XML zgodny ze schemą UPO v4_2.
- Przykładowy plik znajduje się w folderze:
examples/upo.xml - Po wybraniu pliku, PDF zostanie wygenerowany.
Biblioteka może działać jako samodzielny serwer HTTP — XML na wejściu, PDF lub HTML na wyjściu.
npm run build
node server/index.jsSerwer nasłuchuje na porcie 3001 (zmiana przez zmienną środowiskową PORT).
| Metoda | Ścieżka | Opis |
|---|---|---|
POST |
/generate/pdf |
Wyślij XML, otrzymaj PDF |
POST |
/generate/html |
Wyślij XML, otrzymaj HTML |
GET |
/health |
Health check ({"status":"ok"}) |
| Nagłówek | Opis |
|---|---|
X-KSeF-Number |
Numer KSeF faktury (wyświetlany w prawym górnym rogu) |
X-KSeF-QRCode |
URL kodu QR (renderowany na dole dokumentu) |
Podstawowe generowanie PDF:
curl -X POST -H 'Content-Type: application/xml' \
--data-binary @assets/invoice.xml \
http://localhost:3001/generate/pdf -o faktura.pdfZ numerem KSeF i kodem QR:
curl -X POST \
-H 'Content-Type: application/xml' \
-H 'X-KSeF-Number: 5555555555-20250808-9231003CA67B-BE' \
-H 'X-KSeF-QRCode: https://ksef-test.mf.gov.pl/invoice/...' \
--data-binary @assets/invoice.xml \
http://localhost:3001/generate/pdf -o faktura.pdfGenerowanie HTML (te same nagłówki co dla PDF):
curl -X POST -H 'Content-Type: application/xml' \
--data-binary @assets/invoice.xml \
http://localhost:3001/generate/html -o faktura.htmldocker build -t ksef-pdf .
docker run -p 3001:3001 ksef-pdfAplikacja zawiera zestaw testów napisanych w TypeScript, które weryfikują poprawność działania aplikacji.
Projekt wykorzystuje Vite do bundlowania i Vitest jako framework testowy.
-
Uruchom wszystkie testy:
npm run test -
Uruchom testy z interfejsem graficznym:
npm run test:ui
-
Uruchom testy w trybie CI z raportem pokrycia:
npm run test:ci
-
Uruchom testy integracyjne serwera HTTP:
npm run test:server
Raport: /coverage/index.html
- Polsko-angielskie nazwy stosowane w zmiennych, typach i metodach wynikają bezpośrednio ze struktury pliku schemy
faktury.
Takie podejście zapewnia spójność i ujednolicenie nazewnictwa z definicją danych zawartą w schemie XML.
- Struktura danych interfejsu FA odzwierciedla strukturę danych źródłowych pliku XML, zachowując ich logiczne powiązania i hierarchię w bardziej czytelnej formie.
- Typy odzwierciedlają strukturę danych pobieranych z XML faktur oraz ułatwiają generowanie PDF
- Typy i interfejsy są definiowane w folderze types oraz plikach z rozszerzeniem types.ts.
- Vitest Docs — https://vitest.dev/guide/
- Vite Docs — https://vitejs.dev/guide/
- TypeScript Handbook — https://www.typescriptlang.org/docs/
- Upewnij się, że pliki XML są poprawnie sformatowane zgodnie z odpowiednią schemą.
- W przypadku problemów z Node.js, rozważ użycie menedżera wersji Node, np. nvm.