Archief - Van .docx naar pdf via JSP/JSF

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Anoniem15

Legacy Member
De titel maakt wel al duidelijk waar ik naartoe wil maar eerst even een beschrijving van de huidige situatie.

We hebben hier op het werk een hele hoop Word documenten (attesten, brieven, verklaringen, ...) Deze documenten worden via Adobe professional of via een pdfprinter omgezet naar pad bestanden. In Acrobat professional worden deze bestanden dan voorzien van formuliervelden op de plaats waar er variabele informatie moet komen, zoals bijvoorbeeld de naam van de klant, adres, rijksregisternummer etc...
Via een JSP pagina in het klantensysteem wordt de pdf opgeroepen en voorzien van de info over de klant die op dat moment geselecteerd is.

Omdat dit systeem redelijk omslachtig, en voor de rest die velden nooit echt goed staan en het enorm veel tijd kost als je in elk document iets moet wijzigen wou ik een nieuw systeem bedenken.

Om via JSP/JSP pdf bestanden te maken kan ik uiteraard gebruik maken van iText, dus een pdf genereren is op zich niet moeilijk.

Het probleem is echter dat ik eerst dat docx bestand moet zien kunnen in te lezen, daarin bepaalde parameters zoals bijvoorbeeld {naam} moet veranderen door de effectieve naam van de klant, en er dan een pdf van moet genereren.

Ik heb al geprobeerd om mijn docx op te slaan als een html bestand maar ik krijg dit nooit strict en de XMLWorkerHelper van iText blijft hier maar fouten op geven.

Volgens mij moet er toch een oplossing bestaan hiervoor?

passero

Legacy Member
Waarom niet gewoon een online formulier maken en dan een PDF generen aan de hand van een template?
Daar bestaan frameworks genoeg voor.

Wij gebruiken hier FOP in combinatie met XSQL om een data source door te geven aan een template. Die template is gewoon een XSLT met een FOP extensie voor de layout (paragrafen, page breaks enzo).
De data zit in een afzonderlijk XML bestand die je door de API koppelt aan het XSLT en zo kan je gemakkelijk PDF's maken.

Heb dat al op verschillende projecten gebruikt. Payslips, rapporten voor een school, PDF versie van grote dossiers enzo.

Het voordeel met een online formulier is dat je dan nog validatie hebt enzo.

Apache(tm) FOP: XSL-FO Input

Anoniem15

Legacy Member
Er moet eigenlijk nooit informatie worden meegegeven aan de hand van formuliervelden, alles wordt opgehaald uit een database.

Ik ga je idee eens bekijken, er moet sowieso een oplossing voor bestaan.

EDIT: Ik werk wel niet met Apache, lokaal is het GlassFisch en op de server JBOSS, dus ik weet niet of dit mogelijk zal zijn.

Anoniem15

Legacy Member
tommie314 zei:
Waarom moet je per se eerst een docx bestand aanpassen? Waarom is direct een PDF niet voldoende? Dat heb ik niet goed begrepen uit je verhaal.

Omdat de brieven moeten gepersonaliseerd worden met de informatie van de klant.

passero

Legacy Member
Wonkelrijm zei:
Er moet eigenlijk nooit informatie worden meegegeven aan de hand van formuliervelden, alles wordt opgehaald uit een database.

Ik ga je idee eens bekijken, er moet sowieso een oplossing voor bestaan.

EDIT: Ik werk wel niet met Apache, lokaal is het GlassFisch en op de server JBOSS, dus ik weet niet of dit mogelijk zal zijn.

Is geen enkel probleem. Het is niet omdat het van de Apache foundation is dat je het op Apache moet draaien :)
Het is een gewone library als een ander. Je kan kan FOP stand-alone in een java app gebruiken of in gelijk welke java container.

Ik heb die op zowel WebLogic als Glassfish gebruikt.

In jouw geval is het zelf ideaal.
Je genereert een XML bestand dat de gegevens uit de DB haalt en geeft die door aan de XSLT en dan maakt FOP er een PDF van.
Ideale use case voor deze library.

Anoniem15

Legacy Member
Als ik het goed begrijp moet ik elk Word document gaan namaken in XSL dan?

passero

Legacy Member
Wonkelrijm zei:
Als ik het goed begrijp moet ik elk Word document gaan namaken in XSL dan?

ja...

Ik heb het trouwens ooit eens in VB gedaan. daar had je wel een API waarmee je velden in word documenten kon opvullen maar ik weet niet in hoe verre zo een lib ook bestaat voor java.

Net even gezocht en blijkbaar heeft de Apache foundation daar ook een oplossing voor...
Apache POI - the Java API for Microsoft Documents
Ik weet wel niet in hoe verre ze het invullen van velden ondersteunen maar in ieder geval ga je wel een workaround kunnen maken waarbij je in het word document #veld1# schrijft en dan een find/replace doet...

Ik laat het verdere onderzoek aan u over ;)

Jerre Muesli

Legacy Member
Vervang gewoon al die zever met een domme reporting tool als jasper reports? Niets zo simpel om een template te maken, wat variabelen te declareren en 1 query te schrijven... Waarom zou je dit met find and replace gezever willen oplossen, xslt zever, etc.?

Anoniem15

Legacy Member
We gaan het systeem blijkbaar volledig omgooien, dus ik wacht af wat ze gaan gebruiken in de toekomst. Voor de moment moet ik me bezig houden met mapping op de AS400, over iets omslachtig gesproken dat :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan