PHPackages                             mdigi/laravel-jasper-client - 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. mdigi/laravel-jasper-client

ActiveLibrary

mdigi/laravel-jasper-client
===========================

Laravel package wrapper for Jasper Reporting Engine REST API

v1.0.3(1mo ago)04↓100%MITPHPPHP ^8.0.2

Since Apr 7Pushed 1mo agoCompare

[ Source](https://github.com/mahakadigitalindonesia/laravel-jasper-client)[ Packagist](https://packagist.org/packages/mdigi/laravel-jasper-client)[ RSS](/packages/mdigi-laravel-jasper-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (5)Versions (5)Used By (0)

mdigi/laravel-jasper-client
===========================

[](#mdigilaravel-jasper-client)

Laravel package (standalone) sebagai wrapper HTTP untuk Jasper Reporting Engine REST API.

Installation
------------

[](#installation)

Tambahkan via Composer (path repo atau VCS sesuai setup kamu), lalu jalankan:

```
composer require mdigi/laravel-jasper-client
```

Configuration
-------------

[](#configuration)

Publish config:

```
php artisan vendor:publish --tag=jasper-config
```

Env yang didukung:

- **Base**
    - `JASPER_BASE_URL` (default `http://localhost:8080`)
    - `JASPER_TIMEOUT` (detik, default `30`)
    - `JASPER_RETRY_TIMES` (default `0`)
    - `JASPER_RETRY_SLEEP_MS` (default `0`)
- **Auth**
    - `JASPER_AUTH_TYPE` (`none|basic|bearer`, default `none`)
    - `JASPER_USERNAME` (basic)
    - `JASPER_PASSWORD` (basic)
    - `JASPER_TOKEN` (bearer)
- **Endpoint map**
    - `JASPER_ENDPOINT_UPLOAD_TEMPLATE` (default `/api/v1/templates`)
    - `JASPER_ENDPOINT_GENERATE_ASYNC` (default `/api/v1/reports/jobs`)
    - `JASPER_ENDPOINT_GENERATE_STATUS` (default `/api/v1/reports/jobs/{job_id}`)
    - `JASPER_ENDPOINT_DOWNLOAD_REPORT` (default `/api/v1/reports/jobs/{job_id}/download`)
    - `JASPER_ENDPOINT_DATASOURCES` (default `/api/v1/datasources`)

Usage
-----

[](#usage)

Facade (recommended, explicit import):

```
use Mdigi\LaravelJasper\Facades\Jasper;

$resp = Jasper::listDataSources();
```

Global short alias `Jasper` (optional):

- Package discovery now provides alias mapping via `composer.json` (`extra.laravel.aliases`).
- If your app disables discovery, add alias manually in `config/app.php`:

```
'aliases' => [
    // ...
    'Jasper' => Mdigi\LaravelJasper\Facades\Jasper::class,
],
```

Via dependency injection:

```
use Mdigi\LaravelJasper\Contracts\JasperClientInterface;

public function __construct(private JasperClientInterface $jasper) {}
```

IDE Autocomplete (`Jasper::`)
-----------------------------

[](#ide-autocomplete-jasper)

This package adds facade type metadata so static autocomplete can resolve methods from `JasperClientInterface`.

If autocomplete is not refreshed yet in your app:

```
composer dump-autoload
```

Then reload your IDE window or restart the PHP language server (Intelephense / PHPStorm indexer).

### uploadTemplate

[](#uploadtemplate)

```
$upload = Jasper::uploadTemplate(storage_path('app/templates/invoice.jrxml'), 'invoice_template');
```

### generateAsync

[](#generateasync)

```
use Mdigi\LaravelJasper\DTO\SubmitJobRequest;

$job = Jasper::generateAsync(new SubmitJobRequest(
    templateId: 'tpl-001',
    outputFormat: 'pdf',
    dataSourceKey: 'main-db',
    sqlQuery: 'SELECT * FROM invoices WHERE id = :id',
    reportParams: ['id' => 1001],
));
```

### getGenerationStatus

[](#getgenerationstatus)

```
$status = Jasper::getGenerationStatus('job-123');
```

### downloadGeneratedReport

[](#downloadgeneratedreport)

```
$binary = Jasper::downloadGeneratedReport('job-123');
file_put_contents(storage_path('app/reports/invoice.pdf'), $binary);
```

### listDataSources

[](#listdatasources)

```
$items = Jasper::listDataSources(); // array
```

Error Handling
--------------

[](#error-handling)

```
use Mdigi\LaravelJasper\Exceptions\JasperConfigurationException;
use Mdigi\LaravelJasper\Exceptions\JasperRequestException;

try {
    $items = Jasper::listDataSources();
} catch (JasperConfigurationException $e) {
    // env/config salah
} catch (JasperRequestException $e) {
    // request ke Jasper gagal / non-2xx
}
```

Full Async Flow Example
-----------------------

[](#full-async-flow-example)

1. Upload template
2. Submit job async
3. Poll status sampai `FINISHED`
4. Download report

Testing
-------

[](#testing)

Run:

```
vendor/bin/phpunit
```

Compatibility
-------------

[](#compatibility)

Planned compatibility matrix:

- **Laravel 9.x** (min PHP **8.0.2**)
- **Laravel 10.x** (min PHP **8.1.0**)
- **Laravel 11.x** (min PHP **8.2.0**)
- **Laravel 12.x** (min PHP **8.2.0**)

Catatan: package ditulis kompatibel PHP 8.0 syntax supaya tetap install di Laravel 9.

Docker Testing
--------------

[](#docker-testing)

Lihat `Dockerfile`, `docker-compose.yml`, dan `.env.testing.example`.

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance93

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

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.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

35d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/40a16348b44914e3d96e54af3054fc8e0d1085b41f6f6d3e5048760bbe247e81?d=identicon)[mahakadigitalindonesia](/maintainers/mahakadigitalindonesia)

---

Top Contributors

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

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mdigi-laravel-jasper-client/health.svg)

```
[![Health](https://phpackages.com/badges/mdigi-laravel-jasper-client/health.svg)](https://phpackages.com/packages/mdigi-laravel-jasper-client)
```

###  Alternatives

[spatie/laravel-export

Create a static site bundle from a Laravel app

646127.9k5](/packages/spatie-laravel-export)[torchlight/torchlight-laravel

A Laravel Client for Torchlight, the syntax highlighting API.

120452.8k11](/packages/torchlight-torchlight-laravel)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)[iankumu/mpesa

A package that helps integrate the Mpesa APIs to your Laravel Project

5014.7k](/packages/iankumu-mpesa)[truckersmp/steam-socialite

Laravel Socialite provider for Steam OpenID.

1516.7k](/packages/truckersmp-steam-socialite)

PHPackages © 2026

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