Die Lösung ist an die EmailComponent angelehnt, d.h. es werden Elements verwendet.
Component:
- Code: Alles auswählen
<?php
class PdfComponent extends Object{
var $template;
function initialize(&$controller, $settings = array()) {
$this->Controller =& $controller;
}
function startup(&$controller) {}
function render($content = null, $template = null, $layout = null) {
if ($template) {
$this->template = $template;
}
$viewClass = $this->Controller->view;
if ($viewClass != 'View') {
list($plugin, $viewClass) = pluginSplit($viewClass);
$viewClass = $viewClass . 'View';
App::import('View', $this->Controller->view);
}
$View = new $viewClass($this->Controller, false);
$content = $View->element('pdf' . DS . $this->template, array('content' => null), true);
return $content;
}
}
?>
Controller:
- Code: Alles auswählen
<?php
class SampleController extends AppController {
var $name = 'Sample';
var $components = array('Pdf');
function savepdf()
{
// Define template, base /views/elements/pdf/
$this->Pdf->template = 'test';
// Render Template
$pdf = $this->Pdf->render();
// Do some stuff
file_put_contents('/path/to/save.pdf',$pdf);
}
}
?>
View:
- Code: Alles auswählen
<?php
App::Import('Vendor','pdf/ufpdf');
$this->pdf = new UFPDF('P', 'mm', 'A4');
$this->pdf->AliasNbPages();
$this->pdf->AddPage();
$this->pdf->SetX(20);
$this->pdf->SetFont('Arial','',7);
$this->pdf->Cell(50,2.5,__("Ich bin eine PDF Datei!", true));
// Der Parameter S beudetet, das kein Header gesendet wird...
echo $this->pdf->Output('','S');
?>