Skip to content

Design Document: Export to PDF and HTML with Jasper Reports

Dmitry Barashev edited this page May 19, 2017 · 4 revisions

Summary

Currently there is just one hardcoded "template" of PDF report in GanttProject. Customization options basically come down to the choice of task/resource columns to be exported. We want to allow for building of arbitrary reports with layout and data chosen by the report designer. We want to use industry standard solution for report templates rather than our own home grown technology. Jasper Reports seems to be a reasonable choice for that.

User interface

There is basic user interface in the PDF/HTML export and we'd like to keep it pretty much as is with probably small modifications.

User can choose "Theme" in the UI and the list of themes may come from different engines.

Current HTML engine is based on XSL transofrmations and doesn't provide any additional configuration options. It has three themes.

Current PDF engine is based on iText and provides additional UI for choosing the date range to be exported, page format and font substitution. These options may be useful for JasperReports based export as well.

Program interface

Technical details

Relevant classes in GanttProject codebase:

Source code location

This feature should eventually be merged into master and published in one of the future versions. The base integration branch for pull requests is prj3_master. Please fork from this base branch and create pull request into this base branch.

We use Java 8 and Kotlin. Feel free to choose the language and feel free to use modern features of Java 8 if needed.

Tests

We'll appreciate a few unit tests if possible.

Source code modification process

The process is described on GanttProject doc pages. Please do follow the code style and code review process. Your code should be of high quality in both operational and reading aspects (that is, it should work and it should be readable to us), and please be prepared to pretty demanding code review.

Clone this wiki locally