Exporting is one of the most used feature in reporting. The Export
package of KoolReport helps to export any report with charts and tables into PDF and other image formats such as PNG, JPG, BMP and more.
In above example, when user click to Export button, browser will call the export.php. The report will run and produce the PDF report.
As you may notice the export using another view called SakilaRentalPdf.view.php
to generate PDF. We separate the pdf-generated view with the for-browser view to be easier to manage. The view for PDF can have extra settings to control pdf margin or pdf header and footer.
More information of the Export package you can find it here.
<?php
require_once "SakilaRental.php";
$report = new SakilaRental;
$report->run()->render();
<?php
require_once "SakilaRental.php";
$report = new SakilaRental;
$report->run()
->export('SakilaRentalPdf')
->settings([
// "useLocalTempFolder" => true,
])
->pdf(array(
"format"=>"A4",
"orientation"=>"portrait",
//"zoom"=>2
))
->toBrowser("sakila_rental.pdf");
<?php
require_once "../../../load.koolreport.php";
use \koolreport\KoolReport;
use \koolreport\processes\Filter;
use \koolreport\processes\TimeBucket;
use \koolreport\processes\Group;
use \koolreport\processes\Limit;
class SakilaRental extends KoolReport
{
use \koolreport\export\Exportable;
public function settings()
{
return array(
"dataSources"=>array(
"sakila_rental"=>array(
"class"=>'\koolreport\datasources\CSVDataSource',
'filePath'=>dirname(__FILE__)."/sakila_rental.csv",
)
)
);
}
protected function setup()
{
$this->src('sakila_rental')
->pipe(new TimeBucket(array(
"payment_date"=>"month"
)))
->pipe(new Group(array(
"by"=>"payment_date",
"sum"=>"amount"
)))
->pipe($this->dataStore('sale_by_month'));
}
}
<?php
use \koolreport\widgets\koolphp\Table;
use \koolreport\widgets\google\ColumnChart;
?>
<div class="report-content">
<div class="text-center">
<h1>Cash In Report</h1>
<p class="lead">This example shows how to export report to PDF</p>
<a href="export.php" class="btn btn-primary">Download PDF</a>
</div>
<hr/>
<?php
ColumnChart::create(array(
"dataStore"=>$this->dataStore('sale_by_month'),
"columns"=>array(
"payment_date"=>array(
"label"=>"Month",
"type"=>"datetime",
"format"=>"Y-n",
"displayFormat"=>"F, Y",
),
"amount"=>array(
"label"=>"Amount",
"type"=>"number",
"prefix"=>"$",
)
),
"width"=>"100%",
));
?>
<?php
Table::create(array(
"dataStore"=>$this->dataStore('sale_by_month'),
"columns"=>array(
"payment_date"=>array(
"label"=>"Month",
"type"=>"datetime",
"format"=>"Y-n",
"displayFormat"=>"F, Y",
),
"amount"=>array(
"label"=>"Amount",
"type"=>"number",
"prefix"=>"$",
)
),
"cssClass"=>array(
"table"=>"table table-hover table-bordered"
)
));
?>
</div>
<?php
use \koolreport\widgets\koolphp\Table;
use \koolreport\widgets\google\ColumnChart;
?>
<html>
<body style="margin:0.5in 1in 0.5in 1in">
<link rel="stylesheet" href="../../../assets/bs3/bootstrap.min.css" />
<link rel="stylesheet" href="../../../assets/bs3/bootstrap-theme.min.css" />
<div class="page-header" style="text-align:right"><i>Sakila Rental Report</i></div>
<div class="page-footer" style="text-align:right">{pageNum}</div>
<div class="text-center">
<h1>Cash In Report</h1>
<h4>This report show the cash-in report per month</h4>
</div>
<hr/>
<?php
ColumnChart::create(array(
"dataStore"=>$this->dataStore('sale_by_month'),
"columns"=>array(
"payment_date"=>array(
"label"=>"Month",
"type"=>"datetime",
"format"=>"Y-n",
"displayFormat"=>"F, Y",
),
"amount"=>array(
"label"=>"Amount",
"type"=>"number",
"prefix"=>"$",
)
),
"width"=>"100%",
));
?>
<?php
Table::create(array(
"dataStore"=>$this->dataStore('sale_by_month'),
"columns"=>array(
"payment_date"=>array(
"label"=>"Month",
"type"=>"datetime",
"format"=>"Y-n",
"displayFormat"=>"F, Y",
),
"amount"=>array(
"label"=>"Amount",
"type"=>"number",
"prefix"=>"$",
)
),
"cssClass"=>array(
"table"=>"table table-hover table-bordered"
)
));
?>
</body>
</html>