Funding and sponsorship
You can now sponsor us on Github: https://github.com/sponsors/NathanaelA
Website and demos
See: https://www.fluentreports.com for more information.
Fluent Reports - Data Driven PDF Reporting Engine for Node.js and Browsers
Try out the reporting engine in your own browser at https://www.fluentreports.com/demo.html
npm install fluentreports
Please read the commands.md file for an overview of all the commands. The files in the
docs/ folder are generated from the source code via jsdocs, so they might be more up to date.
Please read the examples readme file for a list of examples.
Please read the tutorial.md file for the tutorials.
- New: JSON based reports
- New: Report Generator
- Testing Harness to verify reports look the same after any updates
- Completely Data Driven. You pass in the data; you tell it easily how to print the data, and it generates the PDF report.
- Data agnostic, can be arrays, and/or objects; whatever you prefer.
- Headers, Footers, Title Headers, Summary Footers - Both built-in and totally customizable
- Grouping, nested grouping, and yes even more nested groupings...
- Auto-Summing (and other automatic totals like max/min/count)
- Sane defaults, and the ability to easily override not only the defaults but pretty much every aspect of the report generation.
- Images, Gradients, Text, Fonts, Lines, and many other PDF features supported.
- Data can come from anywhere, and the report engine even support Pageable data loading and related(or sub-query) data loading.
- Sub-Reports, Sub-Sub-Reports, etc...
- Bands (Tables/Grids) & Suppressed Bands (w/ column wrapping or column clipping)
- Free Flow Text
- Ability to override each part of the report for total customization of your report
- Fluent API
- Ability to put data over images; gradients, etc.
- Quickly generate complex reports with minimal lines of code.
- Colorization, Font & other changes of text per cell in Bands
- Synchronous and Asynchronous support. If your report doesn't need to do anything Async, you can just code it without any callbacks.
- Group Headers can be (re)printed on every new page, always, and only once.
- Page Numbers and total number of pages
- Text rotation
- Cancelling of report
See the simple & stupid examples for a overview on how to generate a somewhat complex report. In these reports I tried to throw in a chunk of the features to try and give you and idea how powerful the engine is and how to use certain features.
Currently, we ship multiple examples
- Simple Grid Report with Grouping
- Simple Account Summary Report (w/ color & grid for account balances)
- Simple Fax Cover Sheet (w/ image)
- Grid Report showing off Sub-Reports with auto-queries, cell colorization and url links.
- More complex invoice/proposal with grouping, headers, footers.
- The Grocery Report Example done in stages to see from simple to complex reporting.
- For many other examples; click here
Simple Sample Report
This following report is using the a few of the simplest report methods. We can show you how quickly you can create a simple report.
You have the ability to EASILY FULLY override any and all of the Headers, Footers, and Detail bands (and much more).
Really Simple Report:
// Our Simple Data in Object format:const data = name: 'Elijah' age: 18 name: 'Abraham' age: 22 name: 'Gavin' age: 28;// Create a Reportconst rpt = "Report.pdf"// Add a simple (optional) page Header...data data // Add some Data (This is required)// Layout the report in a Grid of 200px & 50px; // Render the Report (required if you want output...)
One other sample report using a list type output:
const data =item: 'Bread' count: 5 unit: 'loaf'item: 'Egg' count: 3 unit: 'dozen'item: 'Sugar' count: 32 unit: 'gram'item: 'Carrot' count: 2 unit: 'kilo'item: 'Apple' count: 3 unit: 'kilo'item: 'Peanut Butter' count: 1 unit: 'jar';const rpt = "grocery1.pdf"data data // Add our Data// Add a simple header// Put how we want to print out the data line.; // Render the Report (required if you want output...)
GUI & Browser Implementations
See the generator documentation