Dynamic CV Generation with JasperReport
Professional, pixel-perfect, enterprise-grade, no-limits solution
Project info
Others
Introduction
A brief project description or quote to summarize its goals.
“Canva is a good-enough solution for non-technical users or for quickly creating a single, visually appealing CV. However, it wasn't sufficient for my needs. Changing business requirements forced me to seek a more dynamic, efficient solution. I have extensive commercial experience with JasperReport, having used it to update my resume for multiple job offers. Non-programmable solutions often frustrated me, so I decided to improve my workflow. One of the challenges was working with JSON data, as I had mostly relied on RDBMS and SQL in the past. Another was achieving an aesthetically pleasing output, as JasperReport doesn't provide ready-made templates. I prototyped several versions with minimal effort and am happy with the results so far. The generated document is dynamic and can adapt its sections to varying lengths based on the provided data. ”
Explore the Project
Tech details - Go to general technical info about components (on this page)
About
This project is functional, but I plan to expand it for self-education. Future goals include creating a scalable PDF generation service, potentially with load balancing, event-driven systems, or containerization via Docker Swarm or Kubernetes.
I might also add a frontend form on my website. Some trade-offs were made regarding .jrxml template design, but I believe the structure can be made more flexible using key-value pairs.
Project Overview
In General
Components
Quick Summary
- IDE
- Shell script
List of All Technologies
Grouped by Category
Category | Technologies |
---|---|
IDE | Tibco JasperReport Studio |
DataSource/Report Parameters | JSON String |
User Input | YAML + .sh file with variables |
Linux tool | bash ✦ envsubst ✦ jq ✦ yq |
Components Specification
Detailed Information Grouped by Components
Table of Contents:
- IDE
- Shell script
Details
-
IDE
I use a JSON file for data input but prefer YAML for configuration, which I convert via a shell script. Before passing JSON to JasperReport, the data must be flattened.
Tech Stack
Category Description IDE Tibco JasperReport Studio DataSource/Report Parameters JSON String User Input YAML + .sh file with variables -
Shell script
A pipeline.sh script automates the process.
Script + IDE
- 1. Input data: Pass variables as template.yaml or vars.txt (environment variables)
- 2. Convert YAML and replace variables: Script converts YAML to JSON and substitutes placeholders.
- 3. Flatten JSON for IDE : A simple loop processes JSON for use in the IDE
Tech Stack
Category Description Linux tool bash Linux tool envsubst Linux tool jq Linux tool yq
Additional Information
- Domain: BI
- Status: in_progress
- Keywords: JasperReports json yaml