Source for file class.phpdocpdf.php
Documentation is available at class.phpdocpdf.php
* Cezpdf callback class customized for phpDocumentor
* phpDocumentor :: automatic documentation generator
* Copyright (c) 2000-2006 Joshua Eichorn, Gregory Beaver
* This library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General
* Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* @copyright 2000-2006 Joshua Eichorn, Gregory Beaver
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @version CVS: $Id: class.phpdocpdf.php 212211 2006-04-30 22:18:14Z cellog $
* @link http://www.phpdoc.org
* @link http://pear.php.net/PhpDocumentor
include_once 'phpDocumentor/Converters/PDF/default/class.ezpdf.php';
include_once 'phpDocumentor/Converters/PDF/default/ParserPDF.inc';
// define a class extension to allow the use of a callback to get the table of
// contents, and to put the dots in the toc
function phpdocpdf(&$pdfconverter,$fontdir,$paper= 'a4',$orientation= 'portrait')
Cezpdf::Cezpdf($paper,$orientation);
* This really should be in the parent class
return $this->currentColour;
$this->setColor($color['r'], $color['g'], $color['b']);
* Extract Pdfphp-format color from html-format color
function _extractColor($htmlcolor)
preg_match('/#([a-fA-F0-9][a-fA-F0-9])([a-fA-F0-9][a-fA-F0-9])([a-fA-F0-9][a-fA-F0-9])/', $htmlcolor, $color);
return array('r' => $red, 'g' => $green, 'b' => $blue);
return $this->_extractColor($htmlcolor);
$this->setColor($color['r'], $color['g'], $color['b']);
if ($info['status'] == 'start')
$color = $this->_extractColor($info['p']);
// fancy_debug('set color to ',$info['p'],$color, $this->_colorStack);
} elseif ($info['status'] == 'end')
$num= $this->ezWhatPageNumber($this->ezGetCurrentPageNumber());
$this->addDestination('toc'. (count($this->reportContents)- 1),'FitH',$info['y']+ $info['height']);
if ($letter == '$') $letter = $name[1];
$this->transaction('start');
$thisPageNum = $this->ezPageCount;
$this->setColor(0.9,0.9,0.9);
$this->filledRectangle($this->ez['leftMargin'],$this->y- $this->getFontHeight(18)+ $this->getFontDecender(18),$this->ez['pageWidth']- $this->ez['leftMargin']- $this->ez['rightMargin'],$this->getFontHeight(18));
$this->_ezText($letter,18,array('justification'=> 'left'));
if ($this->ezPageCount== $thisPageNum){
$this->transaction('commit');
// then we have moved onto a new page, bad bad, as the background colour will be on the old one
$this->transaction('rewind');
// draw a dotted line over to the right and put on a page number
if ($size != 16) $adjust = 1;
$this->setLineStyle($thick,'round','',array(0,10));
$this->line($xpos - (5* $adjust),$info['y'],$info['x']+ 5,$info['y']);
$this->addText($xpos - (5* $adjust)+ 5,$info['y'],$size,$lbl);
* @uses PDFParser extracts all meta-tags and processes text for output
function ezText($text,$size= 0,$options= array(),$test= 0)
function ezOutput($debug = false, $template)
if ($debug) return $this->_save;
$this->ezText($template->fetch('index.tpl'));
return parent::ezOutput();
function _ezText($text,$size= 0,$options= array(),$test= 0)
return parent::ezText($text,$size,$options,$test);
return $this->y + $offset;
return parent::addMessage($message);
// this function will intially be used to implement underlining support, but could be used for a range of other
$text = parent::ezProcessText($text);
$text = str_replace(array('<UL>','</UL>','<LI>','</LI>','<OL>','</OL>','</ol>','<blockquote>','</blockquote>'),
array('<ul>','</ul>','<li>','</li>','<ol>','</ul>','</ul>',"<C:indent:20>\n","<C:indent:-20>"),$text);
// $text = str_replace("<ul>\n","<ul>",$text);
$text = preg_replace("/\n+\s*(<ul>|<ol>)/", "\n\\1", $text);
// some problemos fixed here - hack
$search = array('<ul>','</ul>','<ol>','<li>','</li>');
$replace = array("<C:indent:20>\n","\n<C:indent:-20>","\n<C:indent:20:ordered>\n",'<C:bullet>',"\n");
$text = preg_replace("/([^\n])<C:bullet/", "\\1\n<C:bullet", $text);
$fp = @fopen("C:/Documents and Settings/Owner/Desktop/pdfsourceorig.txt",'a');
$this->ez['leftMargin'] += $margin;
$D = abs($Data["decender"]);
$X = $Data["x"] - ($D * 2) - 10;
$Y = $Data["y"] + ($D * 1.5);
$this->setLineStyle($D, "butt", "miter", array());
$this->ellipse($X, $Y, 1);
$this->addText($info['x']- 20, $info['y']- 1, 10, $this->listIndex++ . '.');
$parser->parse($template->fetch('pagenumbering.tpl'),$this->font_dir,$this);
|