# What is JasperWho?

<div style="text-align: justify;">

JasperWho? is a web application that lets you manage and render JasperReports templates — via a clean frontend, a powerful REST API, or both. It turns the well-established but notoriously Java-heavy JasperReports engine into something any application can consume with a single HTTP call.

[![main-menu-2.png](https://docs.jasper-who.kiwi-software.dev/uploads/images/gallery/2026-05/scaled-1680-/main-menu-2.png)](https://docs.jasper-who.kiwi-software.dev/uploads/images/gallery/2026-05/main-menu-2.png)

---

<h3 id="the-problem" style="color: #203671; margin-top: 2.2em;">The Problem It Solves</h3>

JasperReports is a mature, battle-tested report engine. It produces high-quality PDFs, supports complex layouts, barcodes, images, and dynamic data — and it has been doing so reliably for decades. The catch: it is a Java library. Using it directly means running a JVM, managing a Java stack, and writing Java code to drive it. For teams working in PHP, Python, C#, or any other ecosystem, that is a significant barrier.

JasperWho? removes that barrier entirely. Its render engine is built in pure PHP — no JVM process, no Java runtime on the server, nothing. You design your report templates in Jaspersoft Studio as usual, upload them once, and from that point on — rendering is just a POST request.

```http
POST /api/v1/report-config/A5_KanBan/render
Content-Type: application/json
Authorization: Bearer <token>

{
  "outputType": "base64",
  "parameters": { "P_ARTICLE_NUMBER": "4561287-154" },
  "data": [...],
  "createHistoryRecord": true
}
```

That is the entire integration. No Java, no JVM, no Jaspersoft Server license.

---

<h3 id="origin" style="color: #203671; margin-top: 2.2em;">Where It Came From</h3>

JasperWho? was built by someone with a logistics and IT background who needed a simple, reliable way to generate article labels on demand — from whatever system was running at the time, without caring about the underlying report engine. The original idea was modest: a small API wrapper around JasperReports, nothing more.

It grew. A frontend to manage templates. Connection configs for live SQL data. History records for traceability. Print task dispatching. A permission system. What started as "just get me a label PDF" is now a full suite — and the name stuck, question mark and all.

---

<h3 id="what-it-does" style="color: #203671; margin-top: 2.2em;">What JasperWho? Does</h3>

At its core, JasperWho? does four things:

**Manages report templates.** You upload `.jrxml` files, and JasperWho? analyses them automatically — detecting parameters, data fields, and image resources. Everything is stored, versioned, and ready to render.

**Connects to your data.** JasperWho? can execute SQL queries against live databases at render time. MySQL, MariaDB, PostgreSQL, and SQL Server are all supported. No live connection needed either — you can deliver data directly in the render request as a JSON array, which makes it equally useful for applications that already have the data in memory.

**Renders on demand.** A single API call produces a PDF. You choose the output format — Base64-encoded inline, a file URL, or silent output for print-only flows. Rendering is synchronous and fast.

**Dispatches print jobs.** Rendered PDFs can be forwarded directly to a print service via WebSocket, creating a traceable `ReportPrintTask` with status tracking. Labels off the printer, not just on the screen.

---

<h3 id="who-its-for" style="color: #203671; margin-top: 2.2em;">Who It Is For</h3>

JasperWho? is for anyone who needs to generate documents — labels, reports, delivery notes, production sheets, certificates — reliably and programmatically. The typical home is in **logistics, production, and warehousing**, where printing article labels, kanban cards, or shipment documents is a daily operational need and downtime is not an option.

More broadly: if your application needs to produce a PDF from structured data, and you do not want to build and maintain a report engine yourself, JasperWho? is the answer.

---

<h3 id="deployment" style="color: #203671; margin-top: 2.2em;">Deployment</h3>

JasperWho? is a standard Laravel application. It runs wherever PHP runs — which is nearly everywhere.

<table style="width: 100%; border-collapse: collapse;">
  <thead>
    <tr style="border-top: 1px solid #e6e8ef; border-bottom: 1px solid #e6e8ef;">
      <th style="text-align: left; padding: 6px 10px;">Scenario</th>
      <th style="text-align: left; padding: 6px 10px;">Works?</th>
    </tr>
  </thead>
  <tbody>
    <tr style="border-bottom: 1px solid #e6e8ef;">
      <td style="padding: 6px 10px;">Cloud VM or VPS</td>
      <td style="padding: 6px 10px;"><span style="color: #349b31; font-weight: 600;">Yes</span></td>
    </tr>
    <tr style="border-bottom: 1px solid #e6e8ef;">
      <td style="padding: 6px 10px;">On-premise server</td>
      <td style="padding: 6px 10px;"><span style="color: #349b31; font-weight: 600;">Yes</span></td>
    </tr>
    <tr style="border-bottom: 1px solid #e6e8ef;">
      <td style="padding: 6px 10px;">Docker container</td>
      <td style="padding: 6px 10px;"><span style="color: #349b31; font-weight: 600;">Yes</span></td>
    </tr>
    <tr style="border-bottom: 1px solid #e6e8ef;">
      <td style="padding: 6px 10px;">Raspberry Pi on the shop floor</td>
      <td style="padding: 6px 10px;"><span style="color: #349b31; font-weight: 600;">Yes</span></td>
    </tr>
    <tr>
      <td style="padding: 6px 10px;">Jaspersoft Server</td>
      <td style="padding: 6px 10px;"><span style="color: #525E5A;">Not needed</span></td>
    </tr>
  </tbody>
</table>

The setup is intentionally slim. PHP, a database for JasperWho? itself, and the JasperPHP render engine — that is the stack. No application server, no JVM process to manage, no separate Jaspersoft infrastructure. JasperWho? bundles everything it needs.

<div style="border-left: 4px solid #5fc75d; background: #f6fdf6; padding: 10px 16px; margin: 16px 0; border-radius: 0 4px 4px 0;">
ℹ️ <strong>Want to try it first?</strong> A live demo is available at <a href="http://demo.jasper-who.kiwi-software.dev/docs">demo.jasper-who.kiwi-software.dev</a>.
<p style="margin: 6px 0 0 0;"><strong>Login:</strong> <code>demo@jasper.who</code> &nbsp;·&nbsp; <strong>Password:</strong> <code>demo</code></p>
</div>

</div>