Skip to content

Commit

Permalink
Improved jasper report recipe
Browse files Browse the repository at this point in the history
  • Loading branch information
belgattitude committed Aug 24, 2017
1 parent d49138d commit 466bafc
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 22 deletions.
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

## 2.x.x (unreleased)

- Updated to PHPUnit 6+

### Improved

- Dev updated to PHPUnit 6+
- Dev removed pjbserver-tools from require-dev
- Doc update: recipe for jasper reports

## 2.2.3 (2017-08-17)

Expand Down
5 changes: 2 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,9 @@
},
"require-dev" : {
"phpunit/phpunit": "^6.2",
"belgattitude/pjbserver-tools": "^2.1.2",
"friendsofphp/php-cs-fixer": "^2.4.0",
"friendsofphp/php-cs-fixer": "^2.5.0",
"monolog/monolog": "^1.21.0",
"phpstan/phpstan": "^0.8.2"
"phpstan/phpstan": "^0.8.3"
},
"scripts": {
"check": [
Expand Down
78 changes: 60 additions & 18 deletions doc/language_recipes.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,26 +66,68 @@ Basic example with jasper reports:
```php
<?php

$report = '/path/report.jrxml';
// Variables
$reportFile = '/path/10_report_test_json_northwind.jrxml';
$jsonDataFile = '/path/northwind.json';
$outputFile = '/path/output.pdf';


// --------------------------------------------------------------------------------------
// STEP 1 - compile report
// --------------------------------------------------------------------------------------
$compileManager = $ba->javaClass('net.sf.jasperreports.engine.JasperCompileManager');
$compiledReport = $compileManager->compileReport($report);

$dataSource = $ba->java('net.sf.jasperreports.engine.JREmptyDataSource');

$fillManager = $ba->java('net.sf.jasperreports.engine.JasperFillManager');
$filledReport = $fillManager->fillReport(
$compiledReport,
[
'reportParam1' => 'Title',
'reportParam2' => 'Subtitle'
],
$dataSource
);

$exportManager = $ba->javaClass('net.sf.jasperreports.engine.JasperExportManager');

$exportManager->exportReportToPdfFile($filledReport, '/tmp/output.pdf');
$jasperPrint = $compileManager->compileReport($reportFile);

// ---------------------------------------------------------------------------------------
// STEP 2 - getting fileResolver and classLoader
// ---------------------------------------------------------------------------------------

$reportPath = $ba->java('java.io.File', dirname($reportFile));

$fileResolver = $ba->java('net.sf.jasperreports.engine.util.SimpleFileResolver', [
$reportPath
]);
$fileResolver->setResolveAbsolutePath(true);
$classLoader = $ba->java('java.net.URLClassLoader', [$reportPath->toUrl()]);

// ---------------------------------------------------------------------------------------
// STEP 3 - setting context props
// ---------------------------------------------------------------------------------------

$props = [
//'net.sf.jasperreports.json.source' => $jsonDataFile,
'net.sf.jasperreports.json.source' => $ba->java('java.io.File', $jsonDataFile)->getAbsolutePath(),
'net.sf.jasperreports.json.date.pattern' => 'yyyy-MM-dd',
'net.sf.jasperreports.json.number.pattern' => '#,##0.##',
'net.sf.jasperreports.json.locale.code' => 'en_GB',
'net.sf.jasperreports.json.timezone.id' => 'Europe/Brussels',

'REPORT_FILE_RESOLVER' => $fileResolver,
'REPORT_CLASS_LOADER' => $classLoader
];

// ------------------------------------------------------------------------------------
// Step 4: filling report
// ------------------------------------------------------------------------------------

$fillManager = $ba->javaClass('net.sf.jasperreports.engine.JasperFillManager');

$params = array_merge($props, [
'REPORT_LOGO' => './assets/wave.png',
'REPORT_TITLE' => 'Test'
]);
$jasperPrint = $fillManager->fillReport(
$jasperPrint,
$ba->java('java.util.HashMap', $params)
);

// -----------------------------------------------------------------------------------
// Step 5: Exporting report in pdf
// -----------------------------------------------------------------------------------

$exportManager = $this->ba->javaClass('net.sf.jasperreports.engine.JasperExportManager');

$exportManager->exportReportToPdfFile($jasperPrint, $outputFile);

```

Expand Down

0 comments on commit 466bafc

Please sign in to comment.