Example 29
Description
A sample report with a header and a footer.
It contains a list of the example files in a table with some information about the file
On the following pages the content of the first three example files will be listed.
Output
<?php
include_once "../src/Report.php";
use Adi\ReportLib as ReportLib;
// Create report instance
$report = new ReportLib\Report();
addHeader($report);
addFooter($report);
addText($report);
addTable($report);
addSource($report);
// Produce the output of the report
$report->output(__DIR__ . "/example_029.pdf", 'I');
/**
* Adds the header to the report
* @param ReportLib\Report $report
* @return void
*/
function addHeader(ReportLib\Report $report): void
{
$header = $report->getHeader();
$vc = $header->AddVContainer();
$vc->setMarginBottom(5.0);
$box = $vc->AddBox();
$box->setUseFullWidth(true);
$box->setHeight(15.0);
$if = $box->AddImage("logo2.png", true, 0.0, 10.0);
$if->setVAlignment('M');
$if->setHAlignment('R');
}
/**
* Adds the footer to the report
* @param ReportLib\Report $report
* @return void
*/
function addFooter(ReportLib\Report $report): void
{
$footer = $report->getFooter();
$tsBold = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::BOLD);
$vc = $footer->AddVContainer();
$vc->setMarginTop(5.0);
$box = $vc->AddBox();
$box->setUseFullWidth(true);
$tf = $box->AddText("Adiuvaris - At the lake 901a - 18957 Lakeside - 100 000 00 01", $tsBold);
$tf->setHAlignment('C');
$tf->setVAlignment('B');
}
/**
* Add the title texts
* @param ReportLib\Report $report
* @return void
*/
function addText(ReportLib\Report $report): void
{
$tsHeading1 = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::HEADING1);
$tsHeading2 = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::HEADING2);
$tsBold = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::BOLD);
$body = $report->getBody();
$body->AddText ("Project Examples", $tsHeading1);
$body->AddVDistance (10.0);
$body->AddText ("PHP library 'ReportLib'", $tsHeading2);
$body->AddText ("PHP library for dynamic PDF reports using the TCPDF library", $tsBold);
$body->AddVDistance (20.0);
}
/**
* Adds a table with all example files
* @param ReportLib\Report $report
* @return void
*/
function addTable(ReportLib\Report $report): void
{
$tsHeading2 = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::HEADING2);
$tsSmall = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::SMALLNORMAL);
$tsSmall->setFontFamily('Courier');
$body = $report->getBody();
$table = $body->AddTable();
$table->setUseFullWidth(true);
// Add four columns to the table
$table->addColumn("name", "Filename", 40.0);
$table->addColumn("lines", "Number of lines", 30.0, 'R');
$table->addColumn("modi", "Last modification", 30.0, 'C');
$table->addColumn("size", "Filesize (Byte)", 20.0, 'R');
$files = array_diff(scandir(__DIR__), array(".", ".."));
foreach ($files as $file) {
if (!str_starts_with($file, "example")) {
continue;
}
$fileSize = filesize(__DIR__ . '/' . $file);
$fileTime = filemtime($file);
$content = file($file);
$row = new ReportLib\TableRow('D');
$row->setText("name", $file);
$row->setText("lines", count($content));
$row->setText("modi", date("d.m.Y", $fileTime));
$row->setText("size", $fileSize);
$table->addDataRow($row);
}
}
/**
* Adds the source code of the first three example files
* on separate pages.
* @param ReportLib\Report $report
* @return void
*/
function addSource(ReportLib\Report $report): void
{
$tsHeading2 = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::HEADING2);
$tsSmall = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::SMALLNORMAL);
$tsSmall->setFontFamily('Courier');
$body = $report->getBody();
$num = 0;
$files = array_diff(scandir(__DIR__), array(".", ".."));
foreach ($files as $file) {
if (!str_starts_with($file, "example")) {
continue;
}
$num++;
if ($num > 3) {
break;
}
$body->AddPageBreak();
$body->AddText("Content of file '" . $file . "'", $tsHeading2);
$body->AddVDistance(5.0);
$content = file($file);
foreach ($content as $line) {
if (strlen($line) > 1 && $line[1] == '*') {
continue;
}
$body->AddText($line, $tsSmall);
}
}
}