openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit f7f283a86e814e56733ae530703b171de63aa58f
parent b8f884bdd1bcd232bf3e1f7dd092a9c6b1b3e41f
Author: dankert <devnull@localhost>
Date:   Wed, 22 Apr 2009 00:28:08 +0200

Erweiterung PDF-Renderer um Text-Auszeichnungen und Bilder.

Diffstat:
textClasses/renderer/Pdf.class.php | 35+++++++++++++++++++++++++++++++++++
textClasses/renderer/PdfRenderer.class.php | 81++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
2 files changed, 99 insertions(+), 17 deletions(-)

diff --git a/textClasses/renderer/Pdf.class.php b/textClasses/renderer/Pdf.class.php @@ -0,0 +1,35 @@ +<?php + +/* + * + */ +class Pdf extends FPDF +{ + /* + * Ueberschreibt die FPDF-Methode, damit im Fehlerfall kein die() aufgerufen wird. + */ + function Error( $errorText ) + { + Logger::warn('PDF-Error:'.$errorText); + } + + /* + * Ueberschreibt die FPDF-Methode, damit im Fehlerfall kein die() aufgerufen wird. + */ + function Image( $file,$x,$y,$a,$b,$type ) + { + switch( $type ) + { + case 'png': + case 'jpeg': + case 'jpg': + parent::Image($file,$x,$y,$a,$b,$type); + break; + default: + Logger::warn( 'Imagetype '.$type.' not available in PDF renderer'); + + } + } +} + +?> diff --git a/textClasses/renderer/PdfRenderer.class.php b/textClasses/renderer/PdfRenderer.class.php @@ -12,6 +12,7 @@ */ require('textClasses/renderer/fpdf.php'); +require('textClasses/renderer/Pdf.class.php'); class PdfRenderer { @@ -23,7 +24,7 @@ class PdfRenderer */ var $footnotes = array(); - var $fpdf; + var $pdf; var $url; @@ -44,13 +45,13 @@ class PdfRenderer break; case 'rawelement': - $this->fpdf->Write(5,$child->src); + $this->pdf->Write(5,$child->src); break; case 'textelement': - $this->fpdf->Write(10,$child->text,$this->url); + $this->pdf->Write(5,$child->text,$this->url); $this->url = ''; break; @@ -58,72 +59,115 @@ class PdfRenderer break; case 'codeelement': + $this->pdf->ln(10); + $this->pdf->SetFont('Courier','',12); break; case 'quoteelement': - $tag = 'blockquote'; + $this->pdf->SetFont('Arial','I',12); break; case 'paragraphelement': - $this->fpdf->ln(10); + $this->pdf->ln(10); break; case 'speechelement': + $this->pdf->SetFont('Arial','I',12); break; case 'linebreakelement': - $this->fpdf->ln(5); + $this->pdf->ln(5); break; case 'linkelement': $this->url = $child->getUrl(); + $this->pdf->SetTextColor(0, 0, 255); // Blau. break; case 'imageelement': + if ( Object::available( $child->objectId ) ) + { + $this->pdf->ln(5); + // Breite/oe�he des Bildes bestimmen. + $image = new File( $child->objectId ); + + $image->load(); + $image->write(); + $image->getImageSize(); + // $image->width; + // $image->height; + + $this->pdf->Image($image->tmpfile(),$this->pdf->GetX(),$this->pdf->GetY(),0,0,$image->extension()); + $this->pdf->ln($image->height/2.5); + $this->pdf->ln(5); + + unset($image); + } break; case 'strongelement': + $this->pdf->SetFont('Arial','B',12); + break; case 'emphaticelement': + $this->pdf->SetFont('Arial','I',12); break; case 'insertedelement': + $this->pdf->SetTextColor(0,255,0); break; case 'removedelement': + $this->pdf->SetTextColor(255,0,0); break; case 'headlineelement': - $this->fpdf->ln(20); + $this->pdf->ln(20-(2*$child->level)); + $this->pdf->SetFontSize(20-(2*$child->level)); + break; case 'tableelement': + $this->pdf->ln(20); break; case 'tablelineelement': + $this->pdf->ln(20); break; case 'definitionlistelement': + //$this->pdf->ln(10); break; case 'definitionitemelement': - break; - + $this->pdf->ln(10); + if ( !empty($child->key) ) + { + $this->pdf->SetFont('','U'); + $this->pdf->Write(5,$child->key); + $this->pdf->SetFont('',''); } + $this->pdf->Write(5,': '); + case 'tablecellelement': break; - case 'listelement': + case 'teletypeelement': + $this->pdf->SetFont('Courier','',12); break; - case 'teletypeelement': + case 'listelement': + $this->pdf->ln(5); break; case 'numberedlistelement': + $this->pdf->ln(5); break; case 'listentryelement': + $this->pdf->ln(5); + $this->pdf->Write(5,'- '); break; default: @@ -134,7 +178,9 @@ class PdfRenderer { $this->renderElement( $c ); } - + + $this->pdf->SetFont('Arial','',12); + $this->pdf->SetTextColor(0,0,0); } @@ -145,11 +191,12 @@ class PdfRenderer */ function render() { - $this->fpdf = new FPDF(); - $this->fpdf->AddPage(); - $this->fpdf->SetFont('Arial','',12); + $this->pdf = new Pdf(); + $this->pdf->AddPage(); + $this->pdf->SetCreator(OR_TITLE); + $this->pdf->SetFont('Arial','',12); - $this->footnotes = array(); + #$this->footnotes = array(); foreach( $this->children as $child ) $this->renderElement( $child ); @@ -157,7 +204,7 @@ class PdfRenderer #foreach( $this->footnotes as $child ) # $this->renderElement( $child ); - return $this->fpdf->Output('','S'); + return $this->pdf->Output('','S'); } }