Empfehlungen: Erweiterte Suche

PdfComponent

Daten auslesen, verarbeiten und den Views übergeben

PdfComponent

Beitragvon Flo » Fr 30. Jul 2010, 19:09

Im Zuge der Portierung einer App von 1.1 auf 1.3 bin ich auf das Problem gestossen, wie ich mit UFPDF (einer Unicode erweiterung von FPDF - http://fpdf.de) erzeugte PDF Dateien speichern kann.

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(&amp;$controller, $settings = array()) {
        $this->Controller =&amp; $controller;
    }

    function startup(&amp;$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');
?>
Flo
 
Beiträge: 85
Registriert: Mi 11. Jun 2008, 20:48
Wohnort: Bielefeld
CakePHP-Version: 1.3
OS: Mac OSX 10.6

Re: PdfComponent

Beitragvon euromark » Sa 31. Jul 2010, 09:43

Manche würden jetzt sagen:
Es sollte eher ein Helper sein - da es ja letzendlich wie ein HTML-View ist, nur eben jetzt in PDF-Form.
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: PdfComponent

Beitragvon Flo » Sa 31. Jul 2010, 10:52

das Problem, einen Helper kannst du nicht im Controller ansprechen (naja mit Import vllt)
und es geht ja auch nicht Primär um eine Ausgabe, sondern darum das ich die PDF, z.B eine Rechnung auf dem Server speichern will.
Flo
 
Beiträge: 85
Registriert: Mi 11. Jun 2008, 20:48
Wohnort: Bielefeld
CakePHP-Version: 1.3
OS: Mac OSX 10.6


Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast