PHPackages                             juanmf/neat-reports - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. juanmf/neat-reports

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

juanmf/neat-reports
===================

Reporting Engine, design with MS Word, render as PDF|HTML|etc

2376PHP

Since Jan 25Pushed 13y ago4 watchersCompare

[ Source](https://github.com/juanmf/neatReports)[ Packagist](https://packagist.org/packages/juanmf/neat-reports)[ RSS](/packages/juanmf-neat-reports/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

neatReports
===========

[](#neatreports)

Note: This project was 1st conceived as a symfony 1.4 plugin. The original plugin repo:

neatReports is a tool for generating reports with PHP, even though it provides a PHP API it integrates several technologies to achieve it. The reports are generated in three (three online, plus template design time) phases:

- Data Generation
- Data and template Merging.
- Rendering

The Data generation consists of anything that produces a RAW XML with the report data. Of course, this XML structure must be consistent among several rendering of the same report. Since you will consider this structure when creating the template, as the template must consume this data XML. The reportEngine provides a placeholder class for putting this kind of logic, but you can generate it in methods elsewhere, so you either provide the callback to generate it or the XML itself. To make things easier, a Doctrine XML Hydrator is bundled so you can get XML out of your Doctrine Queries, this is really handy if you use Doctrine, if not you have an arrayToXML method in utils, that will also help..

The template must be an XSLT transformation stylesheet, that will be processed by PHP XSLT Processor, don't get scared yet, I provide an automatic way of generating it from a MS WordML 2003 document. This stylesheet consumes your data XML and Renders a XSL-FO document, that represents the rendered report, but in FO. The report must still go through the Rendering phase, if you want something different from XSL-FO.

In the Rendering phase transforms the XSL-FO representation into PDF, HTML, or simply the same FO. more transformations can be easily added.

The look and feel of the generated PDFs are great, thanks to XSL-FO and ApacheFOP. They look almost identical to the Word template you make (Thanks to Word2FO). By the time you feel the need to tweak the automatically generated template, if it ever happens, you'll have already made some nice reports and feel more at home with XSLT and XSL-FO. which by the way is infinitely easier to tweak than to write from scratch.

Take a look at the HowToReport to see what can be done:

Dependencies
============

[](#dependencies)

neatReports has the following dependencies, some of which (Word2FO and fo2html) I can't package all together:

- Word2FO a great tool from RenderX  . I made a Stylesheet (*Word2XSLTRenderingFO.xsl*) that depends on this one, so that you can create XSLT stylesheets that consume XML data instead of a final XSLFO document. Even though I didn't package Word2FO, all you need to do is download it and decompress it in */doc* directory. RenderX.com will ask for your mail to let you download the stylesheet, which comes with full license (text from RenderX's page ..."These stylesheets were prepared by RenderX's development team and Microsoft for general use."...). This is used for templating, not in the rendering process, but it makes life easier. How to edit Word Documents to take advantage of my changes is detailed in \\doc\\HowToReport.pdf
- ApacheFOP an open source FO Processor, made in java, for which I made a wrapper and some classes to consume it as a web service (you must deploy it on an application server for that, i.e. Glassfish) or from Command line. This one comes bundled.
- fo2html.xsl Also from RendeX (), which I modified a bit, not finished nor tested yet, to generate HTML that Excel understands, and alter default table width. This is used for rendering the report in HTML. You should put this stylesheet in \\lib\\RenderStep3\\xsl\\fo2html.xsl to match sfExportGlobals.yml configuration Note: you can find both stylesheets in the Free tools Section at

The user manual is located at /doc/HowToReport.pdf // TODO: update following steps as installation changes to a Component installation process.

1. You need to enable php\_soap.dll &amp; php\_xsl.dll extensions
2. Register Plugin in ProjectConfiguration.php // TODO: update step
3. Enable\_module "export" in setting.yml // TODO: update step
4. Copy /config/sfExportConfig.yml to app/config // TODO: update step
5. In sfExportConfig.yml you define the location of you reports XSLT stylesheets
6. To see some example reports copy /modules/export/templates/reports directory to app/templates
7. You can open /export to see what reports you have defined, and test them.
8. @see /modules/export/actions/actions.class.php (render action) for an example of how to use LayoutManager::render()
9. install Glassfish, from Netbeans, (Optional as you also have a Renderer for FOP from the CLI):

9.1) open the project WebFopWrapper2

9.2) right click =&gt; clean and build

9.3) right click =&gt; deploy

9.3.1) fin in the output the following URL:

```
|  INFO: WS00019: EJB Endpoint deployed

|   WebFOPWrapper2  listening at address at http://juanmf-PC:8080/DecretoRenderService/DecretoRender

```

this should match the value of RenderPDFConsummer::$\_wsLocation (I'll put this value in config yml soon)

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/886723?v=4)[Juan Manuel Fernandez](/maintainers/juanmf)[@juanmf](https://github.com/juanmf)

---

Top Contributors

[![juanmf](https://avatars.githubusercontent.com/u/886723?v=4)](https://github.com/juanmf "juanmf (12 commits)")

### Embed Badge

![Health badge](/badges/juanmf-neat-reports/health.svg)

```
[![Health](https://phpackages.com/badges/juanmf-neat-reports/health.svg)](https://phpackages.com/packages/juanmf-neat-reports)
```

###  Alternatives

[spatie/browsershot

Convert a webpage to an image or pdf using headless Chrome

5.2k32.1M102](/packages/spatie-browsershot)[smalot/pdfparser

Pdf parser library. Can read and extract information from pdf file.

2.7k34.5M216](/packages/smalot-pdfparser)[barryvdh/laravel-snappy

Snappy PDF/Image for Laravel

2.8k24.8M48](/packages/barryvdh-laravel-snappy)[openspout/openspout

PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way

1.1k57.6M131](/packages/openspout-openspout)[keboola/csv

Keboola CSV reader and writer

1451.8M21](/packages/keboola-csv)[setasign/tfpdf

This class is a modified version of FPDF that adds UTF-8 support. The latest version is based on FPDF 1.85.

426.1M30](/packages/setasign-tfpdf)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
