Dokumentum generálás
Dokumentum generáláshoz a SEMI Product két eszközt vizsgált meg.
A két eszköz:
- Apache POI (a Gotenberg-et használva a
docx->pdfkonverzióra) - Docmosis
Mindkét eszköz lényege, hogy egy docx kiterjesztésű fájlt használhatunk template-ként, amibe belekerülhetnek a statikus szövegek.
A dinamikus részeket pedig a programkód helyettesíti be a megfelelő placeholderek helyére.
1. Apache POI és Gotenberg
- Előnye, hogy ingyenesen használható.
- Hátránya, hogy limitáltabb a funkcionalitása mint a fizetős eszközöknek.
1.1 Mikor érdemes a POI-t választanunk?
Amennyiben a projekten nem szükséges:
- Dinamikus hosszúságú listákat, táblázatokat beszúrni a dokumentumba.
- Adott bekezdések, táblázat oszlopok valamilyen feltétel alapján dinamikusan kerüljenek be a generált dokumentumba.
Azonban szeretnénk a statikus szövegekben:
- Fix helyen található szavakat, hosszabb szövegeket dinamikusan cserélni.
- Fix táblázatok celláinak értékét dinamikusan cserélni.
- Fix helyen található footer értékeket dinamikusan cserélni.
Ha a fentiek teljesülnek, akkor az Apache POI is elengendő lehet a projekten.
1.2 Beüzemelése
A dokumentum generálás funkció alapértelmezetten ki van kapcsolva a projekten, így a bekapcsoláshoz az alábbi application.yml paraméter értékét állítsuk true-ra.
Mivel a pdf előlállításához a POI mellé a Gotenberg-et is használjuk, a backend/infrastructure mappában található docker-compose.yml fájlban vegyük ki a kommentezést a gotenberg szervíznél.
gotenberg:
container_name: gotenberg
image: gotenberg/gotenberg:7
restart: always
ports:
- "3000:3000"
Gotenberg beüzemelése a többi környezeten
Fontos, hogy ne felejtsük el, hogy a Gotenberg szükséges lesz az AWS DEV, illetve a UAT/PROD környezeteinken is. Ezért ne felejtsük el oda is deployolni, illetve a telepítés menetét a deployment guide-okba is beleírni.
2. Docmosis
- Előnye, hogy nagyon jól használható tetszőleges dinamikus tartalom generálásához.
- Hátránya, hogy használatához license szükséges.
2.1 Mikor érdemes a Docmosis-t választanunk?
Ha a projekten számos olyan dokumentumot kell generálnunk, ahol szeretnénk:
- Dinamikus hosszúságú listákat, táblázatokat beszúrni a dokumentumba.
- Adott bekezdéseket, táblázat oszlopokat valamilyen feltétel alapján dinamikusan beletenni a generált dokumentumba.
Fontos, hogy a Docmosis segítségével a fentieket úgy tudjuk megtenni, hogy például a táblázat pontos helye, fejléce,
formázása, mind a docx template-ben van definiálva, viszont a tartalmát a Docmosis dinamikusan tudja feltölteni kódból.
De egyszerűen kezelhető az is, hogy amennyiben 0 sort tartalmazna a táblázat, akkor a fejléc se jelenjen meg stb.
2.2 Beüzemelése
A Docmosis integráció alapértelmezetten ki van kapcsolva a projekten, így a bekapcsoláshoz az alábbi application.yml paraméter értékét állítsuk true-ra.
A Docmosist mi self-hosted módon használjuk, amihez a Tornado API-t áll rendelkezésre.
A megfelelő docker image elindításához a backend/infrastructure mappában található docker-compose.yml fájlban vegyük ki a kommentezést a tornado szervíznél.
tornado:
container_name: tornado
build: https://raw.githubusercontent.com/docmosis/tornado-docker/master/Dockerfile
restart: unless-stopped
platform: linux/amd64
ports:
- "9090:8080"
volumes:
- ${project-folder-path}/src/main/resources/document/generation/templates:/home/docmosis/templates #Replace the placeholde with the actual full path of the project
environment:
DOCMOSIS_KEY: "DEVELOPER_KEY_PLACEHOLDER" #Add the Tornado API developer key between double quotes
DOCMOSIS_SITE: "Free Trial Tornado"
DOCMOSIS_ADMINPW: "admin"
- A
volumesszekcióban cseréljük ki a${project-folder-path}placeholdert a lokális környezetünknek megfelelő útvonalra. - Az
environmentszekcióban a változók értékéit helyettesítsük be:DOCMOSIS_KEYA license-ünkhöz kapott kulcs értéke.DOCMOSIS_SITEA license-ünkhöz kapott érték.DOCMOSIS_ADMINPWA Tornado felület eléréshez szükséges jelszó, alapértelmezett értéke:admin.
Docmosis beüzemelése a többi környezeten
Fontos, hogy ne felejtsük el, hogy a Docmosis szükséges lesz az AWS DEV, illetve a UAT/PROD környezeteinken is. Ezért ne felejtsük el oda is deployolni, illetve a telepítés menetét a deployment guide-okba is beleírni.
Továbbá, figyeljünk rá, hogy külön license kulcsunk legyen az éles, és a teszt/DEV környezetekhez.