Hello,
I'm new to Jasper Reports and I would like to ask for some recommandations.
I used JasperSoft Stdio to design a report using an XML data source.
The XML file I used to create my Data Adapter is simply a sample file from which I defined the fields. However the target is that several users of a business application will input batches of data, and at th end of each batch, an XMLfile will be produced.
What I would like to send the XML to Jasper Reports and instruct it to generate the report. Ideally, I would like to send the data via HTTP (using curl or something similar, and get my PDF report back as a response). The goal is to produce the report immediately when the XML file is produced, ant automatize the whole process.
What would be your recommandation to achieve this , given that the business application is an old fashion app and cannot integrate Java libraries, and that, in my context, developping an intermediary layer in Java is not an option. I may be able to develop an intermediary layer in Python only.
Thank you in advance for you precious help.
Best regards
1 Answer:
In my opinion, just create a Python application, then import your PDF template design using Jasper report, transfer your data using parameters instead of fields and you will get the PDF as the result.
Firstly, design a template using Jasper Report Studio. You will get the jrxml file.
Secondly, for the import template to the Python application, I found this: https://pypi.org/project/pyreportjasper/
Finally, transfer your data using parameters instead of fields. As you can see in the above link, when running the jasper.process(), they pass an object containing a property is parameters. parameters property is a map object with the key is string and value is any type you want. Define a parameter in your PDF template and you can use it in your template. You can receive the data via HTTP request and pass the data to PDF template through parameters.
Hi,
Thank you very much for your answer. I made some tests, and it seems to be exactly what I needed.
I'll make more advanced tests to see if I can move on with this solution.
I just have a problem with it : In JasperSoft Studio, I created a Data Adapter in which I specified that input date format is "dd/MM/yyyy". In my jrxml, I defined a field with type java.util.date. This enables me to modify the date format when I put in on my report.
However, with pyreportjasper, the Data Adapter is useless. So I didn't find the way to specify the input date format, and got a "unparseable date" error....
So I modified the type of my date field to java.lang.String. However, it makes the format conversion heavier.
Beside this, with the simple report I tested, it works fine.
Thanks again for your help.