PDF-rapportages met FME

Een tijdje terug heb ik bij de FME World Tour van Red Geographics een presentatie gegeven over het maken van automatische rapportages met FME. Ik heb hier veel enthousiaste reacties en vragen over ontvangen. In drie artikelen ga ik jullie daarom inzicht geven in de opbouw van dit soort rapportages.

  • Deel 1: Word-rapportages op basis van informatie uit ArcGIS Online
  • Deel 2: PDF-rapportages op basis van informatie uit de KaartViewer van Geonovation
  • Deel 3: Powerpoint rapportages op basis van een custom tool    

Deel 2: PDF-rapportages

Geonovation KaartViewer

De Enk Groen en Golf maakt gebruik van de KaartViewer van Geonovation voor het beheer van de golfbanen en groenprojecten. Een belangrijk communicatiemiddel bij deze projecten is het vastleggen van meldingen. Het gaat daarbij bijvoorbeeld over meldingen van extra werkzaamheden, afwijkingen en flora- en faunaregistraties. Deze meldingen worden geplaatst door de Enk én opdrachtgever. Bij iedere melding kan worden aangegeven wie hier een mailtje van moet ontvangen. Na het opslaan van de melding verstuurt de KaartViewer direct een seintje naar FME Server. Dit is mogelijk omdat Geonovation de KaartViewer heeft voorzien van een optie om een eigen script uit te voeren na opslaan van een formulier.

FME Server

FME Server pakt de aanvraag vanuit de KaartViewer direct op. Als eerste actie wordt alle info van de melding opgehaald uit de database van de Enk. Vervolgens wordt een HTML-rapportage opgebouwd voordat het geheel uiteindelijk wordt omgezet naar PDF. De mogelijkheden in functies en vormgeving voor het opbouwen van een HTML-bestand zijn binnen FME namelijk veel uitgebreider dan het direct schrijven van een PDF.

Als eerste onderdeel wordt op basis van de locatie van de melding wat info toegevoegd over die locatie, zoals het adres. Dat gebeurt met de PDOK Geocoder.

De rapportage is voorzien van een kaart met de locatie van de melding. Die kaart wordt opgebouwd met Leaflet. Hiervoor heb ik de LeafletVectorMap transformer ontwikkeld en opgenomen in de FME-hub. Meer info over deze transformer is hier te vinden.

Alle info van de melding wordt in een HTML-tabel geplaatst. Omdat er soms ook internationale projecten door de Enk worden uitgevoerd, is de workspace zo opgebouwd dat deze automatisch een Engelse rapportage opbouwt als dat nodig is.

Iedere melding kan worden voorzien van meerdere foto’s en andere bijlagen. Op basis van het ID van de melding worden de locaties van de bestanden opgezocht op de server. Omdat de rapportage als HTML wordt opgebouwd is het niet nodig om de bestanden in FME in te laden. Alleen de URL als verwijzing is voldoende.

Alle afzonderlijke stukken HTML worden uiteindelijk samengevoegd tot één stuk tekst, simpelweg door het gebruik van een AttributeCreator. Wat hierbij belangrijk is, is dat de afzonderlijke stukken op de juiste plaatsen zijn voorzien van een paginascheiding. In de HTML zelf is hier niets van zichtbaar, maar bij het printen naar PDF op A4 formaat wordt die scheiding gebruikt als pagina-einde. Dit is in de HTML opgenomen met het commando <div style=”page-break-after: always;”>

De HTML is hiermee gereed. Nu kan er een PDF van worden gemaakt. Hiervoor is één transformer nodig: de HTML2PDFConvertor. Deze custom transformer is ontwikkeld door Safe zelf en is erg dynamisch opgebouwd. De enige belangrijke beperking is dat de onderliggende applicatie WKHTMLTOPDF.exe aanwezig moet zijn op de server waar het script wordt uitgevoerd. Hierdoor is het helaas geen optie om deze transformer te gebruiken in combinatie met FME-cloud.

Ik heb de HTML2PDFConvertor zelf nog uitgebreid met drie instellingen:

  1. Javascript delay: bij grote rapportages met leaflet-kaartjes kan het nog wel eens gebeuren dat de HTML onder water nog niet volledig is geladen voordat de PDF wordt opgebouwd. Om dat te voorkomen heb ik een counter toegevoegd met 1 seconde vertraging per kaart.
  2. HTML-header: Naast de inhoud van de pagina wordt iedere pagina ook voorzien van een koptekst
  3. HTML-footer: Net zoals de HTML-header wordt iedere pagina afgesloten met een voettekst, zoals een automatisch paginanummer.

Email rapportage

Als laatste stap binnen de workspace wordt de rapportage gemaild aan iedereen die bij het invulveld Notificatie is opgenomen. Om de mail compact te houden is de rapportage niet als bijlage opgenomen in de mail, maar is de mail voorzien van een link naar het rapport op de server.

Eindresultaat

Met behulp van dit proces wordt een volledige automatische PDF-rapportage opgebouwd. De verslaglegging is hiermee gewaarborgd en alle betrokkenen zijn direct geïnformeerd.

Vragen

Ik heb in vogelvlucht wat tips proberen te geven voor het maken van een dynamische en automatische rapportage. Ben je benieuwd naar meer info? Neem dan contact met me op!

Share on facebook
Share on twitter
Share on linkedin