Example 18

Description

It is possible to define different text styles for the different row types in a table. Any attribute of the text styles can be changed as needed.
Here the subtotal lines use font family ‘Courier’ and the total lines use ‘Times’. The detail rows have a blue font color and the header row uses a font size of 11 points

Output

<?php

include_once "../src/Report.php";

use Adi\ReportLib as ReportLib;

// Create report instance
//  default format A4, portrait with margins left = 20mm, top = 10mm, right = 10mm and bottom = 10mm
$report = new ReportLib\Report();

// Get the default text style
$tsNormal = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::NORMAL);
$tsBold = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::BOLD);

$tsHeader = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::TABLE_HEADER);
$tsHeader->setSize(11.0);

$tsSubtotal = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::TABLE_SUBTOTAL);
$tsSubtotal->setFontFamily("Courier");

$tsTotal = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::TABLE_TOTAL);
$tsTotal->setFontFamily("Times");

$tsRow = ReportLib\TextStyles::getTextStyle(ReportLib\TextStyles::TABLE_ROW);
$tsRow->setTextColor("#0000FF");

// Get ref to the report body
$body = $report->getBody();

// Add the table
$table = $body->AddTable();

// Add four columns to the table
$table->addColumn("frametype", "Frame type", 40.0);
$table->addColumn("container", "Container type", 30.0, 'C');
$table->addColumn("description", "Description", 60.0);
$table->addColumn("number", "Number", 20.0, 'R');

// Add a data row to the table with the column widths
$row = new ReportLib\TableRow('S');
$row->setText("frametype", "width 40mm");
$row->setText("container", "width 30mm");
$row->setText("description", "v60mm");
$row->setText("number", "width 20mm");
$table->addDataRow($row);

// Add a data row to the table
$row = new ReportLib\TableRow('D');
$row->setText("frametype", "LineFrame");
$row->setText("container", "No");
$row->setText("description", "This frame type represents a line on the report.");
$row->setText("number", "1");
$table->addDataRow($row);

// Add a second data row to the table
$row = new ReportLib\TableRow('D');
$row->setText("frametype", "SerialFrame");
$row->setText("container", "Yes");
$row->setText("description", "This is a frame container for a series of frames which will be printed one after the other.");
$row->setText("number", "2");
$table->addDataRow($row);

// Add a third data row to the table
$row = new ReportLib\TableRow('D');
$row->setText("frametype", "TextFrame");
$row->setText("container", "No");
$row->setText("description", "A simple frame type to print text.");
$row->setText("number", "3");
$table->addDataRow($row);

// Add a total data row to the table
$row = new ReportLib\TableRow('T');
$row->setText("frametype", "Total");
$row->setText("container", "");
$row->setText("description", "");
$row->setText("number", "100.00");
$table->addDataRow($row);

// Produce the output of the report
//  uses the same params as TCPDF (F = File, I = Preview etc.)
$report->output(__DIR__ . "/example_018.pdf", 'I');