hadleen/candid-pdf-table

Deterministic, colspan-aware table builder for TCPDF

Installs: 2

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Forks: 0

pkg:composer/hadleen/candid-pdf-table

v1.0.0 2026-01-08 01:58 UTC

This package is not auto-updated.

Last update: 2026-01-08 19:37:35 UTC


README

Deterministic, colspan-aware table builder for TCPDF.

candid-pdf-table provides a clean, predictable API to construct HTML tables for TCPDF::writeHTML() using explicit, cell-owned borders and late layout computation.

This library is designed for programmatic table generation where precise control over rows, columns, colspans, borders, and serial numbering is required.

Why this library?

Building complex tables in TCPDF is difficult once HTML is rendered. This library solves that by:

  • Using a cell-centric model (each cell owns its borders & style)
  • Supporting colspan-aware addressing
  • Avoiding implicit or shared borders
  • Computing widths and layout only at render time
  • Keeping behavior deterministic and predictable

Features

  • Explicit, per-cell border control
  • Optional serial number column
  • Colspan-aware cell lookup
  • Header, item, row, and total rows
  • Percent-based column widths
  • Multi-line cell content via HTML
  • Designed specifically for TCPDF

Requirements

  • PHP 7.4+
  • TCPDF (must be available at runtime)

Installation

composer require hadleen/candid-pdf-table

Basic Usage

use Hadleen\TCPDF\Table\CandidPDFTable;

$pdf = new TCPDF();
$pdf->AddPage();

$table = new CandidPDFTable(3);
$table->showSerialNumber('S.NO', 8);

$table->addHeaderRow(['Item','Qty','Amount']);
$table->addItem(['Pen','2','20.00']);
$table->addItem(['Notebook','1','50.00']);
$table->addTotalRow('Total', 70.00);

$table->addTableBorder();
$table->render($pdf);

Serial Column

Enable serial numbering:

$table->showSerialNumber('S.NO', 8);
  • Serial column index = -1
  • Serial numbers appear only on item rows
  • Header shows caption
  • Total rows suppress serial values

Multi-line Cell Content

Use HTML tags such as <br>:

$table->getCellAt(2,1)->setText(
    'Laptop<br><small>Intel i7</small><br><small>16GB RAM</small>'
);

Newline characters (\n) are ignored by TCPDF.

Borders

$table->showLine(2,1,'bottom');
$table->setRowLines(1,'all',1);
$table->setColumnLines(-1,'left',1);
$table->setColumnLines(2,'right',1);
$table->addTableBorder();
$table->addOuterBorder();
$table->addInnerBorder();

Column Widths

$table->setColumnWidth(0,60);
$table->setColumnWidth(1,20);
$table->setColumnWidth(2,20);

Cell Addressing

  • Rows: 1-based
  • Data columns: 0-based
  • Serial column: -1
$table->getCellAt(2,0);
$table->getCellAt(2,-1);

Render Lifecycle

Layout is resolved only during render().

Versioning

Semantic Versioning is used.

Current version: v1.0.0

License

MIT License
© 2026 Hadleen — Tamil Amuthan