anklimsk / cakephp2-tcpdf
Generate PDF files with the CakePHP 2.x
Installs: 138
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:cakephp-plugin
Requires
- php: >=5.4
- anklimsk/cakephp-extended-test: ^1.0.0
- composer/installers: ^1.5.0
README
Generate PDF files with the CakePHP
This plugin provides next features:
- Generate PDF files
Installation
-
Install the Plugin using composer:
composer require anklimsk/cakephp2-tcpdf
-
Add the next line to the end of the file
app/Config/bootstrap.php
:CakePlugin::load('CakeTCPDF', ['bootstrap' => true, 'routes' => true]);
Using this plugin
-
In your
Model
:-
Create the following methods:
public function getExportConfig() { $header = [__('Field label 1'), __('Field label 2'), __('Field label 3'), __('Field label 4')]; $width = [35, 20, 10, 15]; $align = ['L', 'L', 'C', 'R']; $fileName = __('Export file'); return compact('header', 'width', 'align', 'fileName'); } public function getExportData($conditions = []) { ... $result = [ 'Group header (List name)' => [ 'Sub header' => [ [ 'Field value 1', 'Field value 2', 'Field value 3', 'Field value 4', ] ] ] ]; return $result; }
-
-
In your
Controller
:-
Add the
RequestHandler
component toAppController
, and mappdf
to the CakeTCPDF plugin, e.g.:public $components = [ ..., 'RequestHandler' => [ 'viewClassMap' => [ 'pdf' => 'CakeTCPDF.Pdf' ] ] );
-
Add to your controller action:
public export($id = null) { if (!$this->RequestHandler->prefers('pdf')) { throw new BadRequestException(__('Invalid export type'); } $conditions = []; if (!empty($id)) { $conditions['Model.id'] = $id; } $exportConfig = $this->Model->getExportConfig(); $exportData = $this->Model->getExportData(); $this->set(compact('exportConfig', 'exportData')); }
-
-
In your
View
:-
Create a link to the a action with the extension
.pdf
, e.g.:$this->Html->link('PDF file', ['ext' => 'pdf']);
-
Place the View templates in the subdirectory
Pdf
, e.g.:app/View/Invoices/Pdf/index.ctp
-
Use the
CakeTCPDF.exportPdfTable
element in your View file, e.g.:if (!empty($exportConfig)) { extract($exportConfig); } if (!isset($orientation)) { $orientation = PDF_PAGE_ORIENTATION; } if (isset($fileName)) { $this->setFileName($fileName); } $this->tcpdf->setPageOrientation($orientation, TRUE, PDF_MARGIN_BOTTOM); $this->tcpdf->options['footerText'] = $this->tcpdf->getAliasNumPage(); // set font $this->tcpdf->SetFont(PDF_FONT_NAME_DATA, 'B', PDF_FONT_SIZE_DATA); // set default font subsetting mode $this->tcpdf->setFontSubsetting(true); //set margins $this->tcpdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $this->tcpdf->SetHeaderMargin(PDF_MARGIN_HEADER); $this->tcpdf->SetFooterMargin(PDF_MARGIN_FOOTER); $this->tcpdf->AddPage(); $this->tcpdf->setPrintFooter(true); echo $this->element('CakeTCPDF.exportPdfTable', compact('exportConfig', 'exportData'));
-
Use the
CakeTCPDF.exportPdfTableContent
element in your View file, e.g.:echo $this->element('CakeTCPDF.exportPdfTableContent', compact('exportConfig'));
-