Get unlimited public & private packages + package-based permissions with npm Pro.Get started »

fluentreports

1.3.1 • Public • Published

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

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:

  • 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.

Some Examples

Currently, we ship multiple examples

  • Simple Grid Report with Grouping Example 1
  • Simple Account Summary Report (w/ color & grid for account balances) Example 2
  • Simple Fax Cover Sheet (w/ image) Example 3
  • Grid Report showing off Sub-Reports with auto-queries, cell colorization and url links. Example 4
  • More complex invoice/proposal with grouping, headers, footers. Example 5
  • The Grocery Report Example done in stages to see from simple to complex reporting. Example 6
  • 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 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

Install

npm i fluentreports

DownloadsWeekly Downloads

379

Version

1.3.1

License

MIT

Unpacked Size

357 kB

Total Files

11

Last publish

Collaborators

  • avatar