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:
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');
}
}