NathanaelA / fluentreports

:page_facing_up: Fluent Reports - Data Driven Reporting Engine for Node.js and Browsers :page_facing_up:
https://fluentreports.com
MIT License
375 stars 84 forks source link
browser browsers data-driven data-driven-workflows generate node pdf report report-engine report-pdf reporting reporting-engine

Fluent Reports

.github/workflows/renderer.yml

npm npm npm GitHub last commit Dependencies


Funding and sponsorship

github

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

Install

npm install fluentreports

Common JS

Use: const Report = require( 'fluentReports' ).Report;

ESM Support

Please use import { Report } from 'fluentReports/lib/esm/fluentReports.mjs'; as the ESM wrapper is located in the /lib/esm/ folder...

Documentation

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.

Features:

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.

Examples

Currently, we ship multiple examples.

Browser Based Examples

There is a demo_html.htm file in the examples folder that shows how to setup a browser ONLY based report the runs 100% in a browser. There is a readme.md in the generator folder for how to do a browser based reporting system with GUI that runs in the browser.

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 Report  
  const rpt = new Report("Report.pdf")        
        .pageHeader( ["Employee Ages"] )      // Add a simple (optional) page Header...        
        .data( data )                         // Add some Data (This is required)
        .detail( [['name', 200],['age', 50]]) // Layout the report in a Grid of 200px & 50px
        .render();                            // 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 = new Report("grocery1.pdf")      
          .data( data )                                  // Add our Data
          .pageHeader( ["My Grocery List"] )             // Add a simple header          
          .detail("{{count}} {{unit}} of {{item}}")      // Put how we want to print out the data line.
          .render();                                     // Render the Report (required if you want output...)

GUI & Browser Implementations

See the generator documentation