1. Go to this page and download the library: Download soluble/jasper library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
soluble / jasper example snippets
declare(strict_types=1);
use Soluble\Japha\Bridge\Adapter as JavaBridgeAdapter;
use Soluble\Jasper\{ReportRunnerFactory, Report, ReportParams};
use Soluble\Jasper\DataSource\JavaSqlConnection;
use Soluble\Jasper\Exporter\PDFExporter;
// Step 1: Get the report runner
// Good practice is to initialize once and get it from a PSR-11 compatible container
$bridgeAdapter = new JavaBridgeAdapter([
'servlet_address' => 'localhost:8080/JasperReports/servlet.phpjavabridge'
]);
$reportRunner = ReportRunnerFactory::getBridgedReportRunner($bridgeAdapter);
// Step 2: Define your report parameters
$report = new Report(
'/path/my_report.jrxml',
new ReportParams([
'BookTitle' => 'Soluble Jasper',
'BookSubTitle' => 'Generated on JVM with Jasper reports'
]),
new JavaSqlConnection(
'jdbc:mysql://localhost/my_db?user=user&password=password',
'com.mysql.jdbc.Driver'
)
);
// Step 3: Export the report
$pdfExporter = new PDFExporter($report, $reportRunner);
$pdfExporter->saveFile('/path/my_report_output.pdf', [
'author' => 'John Doe',
'title' => 'My document'
]);
// Or for PSR7 response
$response = $pdfExporter->getPsr7Response([
'author' => 'John Doe',
'title' => 'My document'
]);
//$exportManager = $reportRunner->getExportManager($report);
//$exportManager->savePdf('/path/my_report_output.pdf');
/*
$pdfExporter = $exportManager->getPdfExporter();
$pdfExporter->saveFile('/path/my_report_output.pdf');
// Both will need to cache the report
$psr7Response = $pdfExporter->getPsr7Response();
$stream = $pdfExporter->getStream();
*/
declare(strict_types=1);
use Soluble\Jasper\DataSource\JavaSqlConnection;
$dataSource = new JavaSqlConnection(
'jdbc:mysql://server_host/database?user=user&password=password',
'com.mysql.jdbc.Driver'
);
declare(strict_types=1);
use Soluble\Jasper\DataSource\Util\JdbcDsnFactory;
$dbParams = [
'driver' => 'mysql', // JDBC driver key.
'host' => 'localhost',
'db' => 'my_db',
'user' => 'user',
'password' => 'password',
// Optional extended options
'driverOptions' => [
'serverTimezone' => 'UTC'
]
];
$dsn = JdbcDsnFactory::createDsnFromParams($dbParams);
// You should get a jdbc formatted dsn:
// 'jdbc:mysql://localhost/my_db?user=user&password=password&serverTimezone=UTC'
// ready to use as $dsn argument for `JdbcDataSource`
declare(strict_types=1);
use Soluble\Jasper\{ReportRunnerFactory, Report, ReportParams};
use Soluble\Jasper\DataSource\JsonDataSource;
$jsonDataSource = new JsonDataSource('<url_or_path>/northwind.json');
/*
$jsonDataSource->setOptions([
JsonDataSource::PARAM_JSON_DATE_PATTERN => 'yyyy-MM-dd',
JsonDataSource::PARAM_JSON_NUMBER_PATTERN => '#,##0.##',
JsonDataSource::PARAM_JSON_TIMEZONE_ID => 'Europe/Brussels',
JsonDataSource::PARAM_JSON_LOCALE_CODE => 'en_US'
]);
*/
$report = new Report(
'/path/myreport.jrxml',
new ReportParams([
'LOGO_FILE' => '/path/assets/wave.png',
'TITLE' => 'My Title'
]),
$jsonDataSource);
$reportRunner = ReportRunnerFactory::getBridgedReportRunner($this->ba);
$exportManager = $reportRunner->getExportManager($report);
$exportManager->savePdf('/path/my_output.pdf');
declare(strict_types=1);
use Soluble\Jasper\{ReportRunnerFactory, Report, ReportParams};
use Soluble\Jasper\DataSource\XmlDataSource;
$xmlDataSource = new XmlDataSource('<url_or_path>/northwind.xml');
/*
$xmlDataSource->setOptions([
XmlDataSource::PARAM_XML_DATE_PATTERN => 'yyyy-MM-dd',
XmlDataSource::PARAM_XML_NUMBER_PATTERN => '#,##0.##',
XmlDataSource::PARAM_XML_TIMEZONE_ID => 'Europe/Brussels',
XmlDataSource::PARAM_XML_LOCALE_CODE => 'en_US'
]);
*/
$report = new Report(
'/path/myreport.jrxml',
new ReportParams([
'LOGO_FILE' => '/path/assets/wave.png',
'TITLE' => 'My Title'
]),
$xmlDataSource);
$reportRunner = ReportRunnerFactory::getBridgedReportRunner($this->ba);
$exportManager = $reportRunner->getExportManager($report);
$exportManager->savePdf('/path/my_output.pdf');
use Soluble\Japha\Bridge\Adapter as JavaBridgeAdapter;
use Soluble\Jasper\{ReportRunnerFactory, Report, ReportParams};
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$logger = new Logger('soluble-japha-logger');
$logger->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
$bridgeAdapter = new JavaBridgeAdapter([
'servlet_address' => 'localhost:8080/JasperReports/servlet.phpjavabridge'
]);
$reportRunner = ReportRunnerFactory::getBridgedReportRunner($bridgeAdapter, $logger);
$report = new Report('/path/my_report.jrxml', new ReportParams());
// Any exception during report compilation, filling or exporting will
// be logged ;)
declare(strict_types=1);
use Soluble\Japha\Bridge\Adapter;
$ba = new Adapter([
'driver' => 'Pjb62',
'servlet_address' => 'localhost:8080/JasperReports/servlet.phpjavabridge'
]);
// This should print your JVM version
echo $ba->javaClass('java.lang.System')->getProperty('java.version');
shell
# Example based on php-java-bridge master
$ git clone https://github.com/belgattitude/php-java-bridge.git
$ cd php-java-bridge
$ ./gradlew war -I init-scripts/init.jasperreports.gradle -I init-scripts/init.mysql.gradle
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.