The ACTcpdfBundle
integrates the TCPDF PHP library with Symfony. This means easy-to-implement and easy-to-ouptput PDF documents in your Symfony application.
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
composer require acucchieri/tcpdf-bundle
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Then, enable the bundle by adding the following line in the app/AppKernel.php file of your project:
// app/AppKernel.php
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
// ...
new AC\TcpdfBundle\ACTcpdfBundle(),
];
// ...
}
}
Use AC\TcpdfBundle\Pdf\PdfBuider
to create your PDF document. This class extends TCPDF, see TCPDF documentation for more informations about PDF generation.
ACTcpdfBundle
provide helpers to serve your PDF
Return a Response with Content-Disposition: inline
$myPdf->inline('my-pdf.doc');
Return a Response with Content-Disposition: attachment
$myPdf->download('my-pdf.doc');
$myPdf->attachment('my-pdf.doc');
$myPdf->save('/path/to/my-pdf.doc');
$myPdf->toString();
AC\TcpdfBundle\Pdf\PdfBuilder::addMultiCellRow($cells, $sameHeight, $nobr)
allow you to build complex tables, based on MultiCell
.
$cells
is a multidimensional array. Each cell (array) contains :
- The data (text or html)
- The options. Available options :
height
Cell heightwidth
Cell widthborder
Draw the cell borders. Allowed values : 0 or 1. Default = 0align
Horz alignment. Allowed values : 'L' (left), 'C' (center), 'R' (right) or 'J' (justify). Default = 'T'valign
Vert alignment. Allowed values 'T' (top), 'M' (middle) or 'B' (bottom). Default = 'T'fill
Indicates if the cell background must be painted. true or false. Default = falseis_html
Indicate if the data is html. See TCDPF doc for the supported tags. Default = false
$sameHeight
If set to true
all the row cells have the same height. Default = false.
$nobr
If set to true
the row is not break across 2 pages. Default = false.
Example
$data = [
['foo' => 'AAA', 'bar' => 123, 'baz' => '<b>text<b>'],
['foo' => 'BBB', 'bar' => 456, 'baz' => '<a href="https://domain.td">link</a>'],
['foo' => 'CCC', 'bar' => 789, 'baz' => '<ul><li>line 1</li><li>line 2</li></ul>'],
];
foreach ($data as $row) {
$pdf->addRowCell([
[$row['foo'], ['with' => 30]],
[$row['bar'], ['width' => 40, 'align' => 'R']],
[$row['baz'], ['width' => 50, 'is_html' => true]],
]);
}
This bundle is under the MIT license. See the complete license in the bundle