FreeReportv0.1.0한국어

Design, view and print reports in the browser.

FreeReport is a reporting tool built on web standards. Reports are designed in a web designer and saved as JSON; people view them page by page, print them exactly as shown, and save them as PDF or Excel. Nothing to install — no plugins, no ActiveX, no print module. Free for personal use; companies license it per domain.

npm i @freereportjs/coreSee the demosRead the docs

A live viewer. Change the parameters, page through, print, or save as PDF or Excel. The sample documents are Korean forms.

What is included

Every feature is in every copy. Each item links to a demo or the docs.

Web designer, no installLay out bands, tables and fields in the browser and save the report as JSON. Designers run where the users are.Paged viewer with parametersSVG pages drawn as they scroll into view, a parameter panel, zoom, page navigation and keyboard shortcuts.Printing that matches the screenPages print at their exact size through the browser, with the same line breaks as on screen.PDF with Korean fontsThe fonts are embedded as a subset, so Korean text stays searchable and copyable. Optional password and permissions (AES-256).Excel as printed, or as dataKeep the printed layout with merged cells and borders, or write one row per record. CSV and Hangul HWPX too.Watermarks and embossingSecurity patterns that carry the user and print time, plus raised seals pressed into the page.Five barcode typesCode128, EAN-13, QR, DataMatrix and PDF417, drawn as vectors so they scan sharp in print and PDF.ChartsBar, horizontal bar, line, area, pie and doughnut charts bound to the report data.Tables, crosstabs, labelsNested tables for master–detail documents, cross tabulation with totals, and multi-column detail bands for label sheets.Korean formatsAmounts in words (일금 ○○원정), business registration and phone numbers, Korean dates and weekdays.Groups and subtotalsGroup headers and footers, subtotals, page subtotals, page x / y and page numbers per group.Form-friendly tablesFill the rest of a page with blank rows, hide repeated values, keep group headers with their rows.Output log hookAn event before every print or export: write an output log, or cancel it.JSON definitionsA report is a plain JSON file: version it, generate it, send it from your server.100,000 rowsLarge lists are laid out into thousands of pages; pages are drawn only when they come into view.Server renderingrenderPdf and renderXlsx make the same files without a browser, in Node, Deno or Bun batch jobs.Any framework, eGovFrameOne dependency-free package for JavaScript, React, Vue, Svelte and Angular components on npm, and an eGovFrame (JSP) integration sample.

How it differs

Typical Korean reporting tools compared with FreeReport.

Typical reporting toolsFreeReport
InstallOften a print module or viewer on each PCNothing to install; runs on web standards
DesignerDesktop program (Windows)In the browser
Report formatProprietary fileJSON
PDF and ExcelUsually server-sideIn the browser
PriceNot published; quoted per projectKRW 500,000 per domain per year (personal: free)

Start in a few lines

Install the package, give the viewer a container with a height, pass a report definition and data.

import { createViewer, createReport } from '@freereportjs/core';
import '@freereportjs/core/styles.css';

// a report definition is plain JSON (made in the designer or by hand)
const definition = await fetch('/reports/sales.json').then(r => r.json());

const viewer = createViewer(document.getElementById('viewer'), {
  definition,
  data: { rows },            // detail rows plus any other values
  params: { from: '2026-07-01' },
  lang: 'en',
  onOutput: e => log(e),     // every print and export; return false to cancel
});

// without a viewer: straight to PDF or Excel
const report = createReport(definition, { rows });
await report.ready();
const pdf = await report.toPdf();       // Blob
const xlsx = await report.toXlsx('form');

Questions people ask

What is FreeReport?

FreeReport is a web reporting tool: a report designer, a paged viewer, printing, PDF, Excel and CSV export in one JavaScript package. Reports are JSON definitions made of bands (title, page header, groups, detail, summary, page footer). It is made in Korea for Korean business documents and is an alternative to OZ Report, ClipReport, UbiReport and Crystal Reports.

Does anything need to be installed?

No. The designer, viewer, printing and exports run in the browser on web standards. There is no plugin, ActiveX or print module. An optional, signed Windows program prints silently to a chosen printer for counters and offices that need it.

Is the Korean text in PDFs searchable?

Yes. The PDF embeds a subset of the TrueType font (Nanum Gothic by default, or your own font), so Korean text can be searched and copied, and it looks the same on every computer.

How much does it cost?

Personal, educational, research and non-commercial use is free. Companies pay KRW 500,000 per domain per year, or KRW 900,000 per domain once (perpetual, with one year of updates). VAT separate. There is no limit on developers, users or outputs.

Can it handle large reports?

Yes. 100,000 rows are laid out into thousands of pages, and the viewer draws pages only when they scroll into view. See the 100,000 rows demo.

Can I convert forms from another reporting tool?

There is no automatic converter yet. Forms are rebuilt in the designer or written as JSON; most Korean forms (quotes, statements, certificates) take a few hours.

Does it work with React, Vue and eGovFrame?

Yes. The core package works in any framework (see the code below), and @freereportjs/react, /vue, /svelte and /angular provide FreeReportViewer and FreeReportDesigner components. An integration sample shows FreeReport in an eGovFrame (Spring + JSP) project.