<?php
/**********************************************************************
Copyright (C) FrontAccounting, LLC.
- Released under the terms of the GNU Affero General Public License,
- AGPL, as published by the Free Software Foundation, either version
- 3 of the License, or (at your option) any later version.
+ Released under the terms of the GNU General Public License, GPL,
+ as published by the Free Software Foundation, either version 3
+ of the License, or (at your option) any later version.
This program 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 License here <http://www.gnu.org/licenses/agpl-3.0.html>.
+ See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
/*
This class is an extension to the tcpdf class using a syntax that the original reports were written in
class Cpdf extends TCPDF {
- function Cpdf($pageSize='A4', $l=array())
+ function Cpdf($pageSize='A4', $l=array(), $pageOrientation='P')
{
if (!isset($l['a_meta_charset']))
$l = array('a_meta_charset' => 'ISO-8859-1', 'a_meta_dir' => 'ltr', 'a_meta_language' => 'en_GB', 'w_page' => 'page');
$uni = ($enc == 'UTF-8' || $enc == 'GB2312' ? true : false);
if ($uni)
ini_set("memory_limit", "48M");
- $this->TCPDF('P', 'pt', $pageSize, $uni, $enc);
+ $this->TCPDF($pageOrientation, 'pt', $pageSize, $uni, $enc);
$this->setLanguageArray($l);
$this->setPrintHeader(false);
$this->setPrintFooter(false);
$this->cMargin = 0;
}
- function selectFont($fontname, $style='')
+ // $fontname should be a standard PDF font (like 'times', 'helvetica' or 'courier')
+ // or one that's been installed on your system. An empty string can also be used
+ // which will retain the font currently in use.
+ // $style is either:
+ // * a special case string:
+ // * bold
+ // * italic
+ // * or a case-insensitive string where each char represents a style choice
+ // and you can use more than one or none at all. Possible choices:
+ // * empty string: regular
+ // * B: bold
+ // * I: italic
+ // * U: underline
+ // * D: line trough (aka "strike through")
+ function selectFont($fontname, $style = '')
{
- if ($fontname != '')
- $fontname = basename($fontname);
+ // Parse the style - check for special cases, otherwise leave as-is
if ($style == 'italic')
- $type = 'i';
+ $style = 'i';
elseif ($style == 'bold')
- $type = 'b';
- else
- $type = '';
+ $style = 'b';
+
+ // Parse the fontname
+ if ($fontname != '')
+ $fontname = basename($fontname);
if ($fontname == '')
{
if ($this->isunicode)
}
// else use built-in adobe fonts helvetica.
}
- $this->SetFont($fontname, $type);
+ $this->SetFont($fontname, $style);
}
function Header1()
function newPage()
{
- TCPDF::AddPage();
+ parent::AddPage();
}
- function line($x1,$y1,$x2,$y2)
+ function line($x1,$y1,$x2,$y2, $style = array())
{
- TCPDF::line($x1, $this->h-$y1, $x2, $this->h-$y2);
+ parent::Line($x1, $this->h-$y1, $x2, $this->h-$y2, $style);
}
function rectangle($x, $y, $w, $h, $style='', $border_style=array(), $fill_color=array())
{
- TCPDF::Rect($x, $this->h-$y, $w, $h, $style, $border_style, $fill_color);
+ parent::Rect($x, $this->h-$y, $w, $h, $style, $border_style, $fill_color);
}
*/
function ellipse($x0,$y0,$r1,$r2=0,$angle=0,$nSeg=8,$astart=0,$afinish=360,$close=1,$fill=0)
{
- TCPDF::Ellipse($x0, $y0, $r1, $r2, $angle, $astart. $afinish, ($close?'C':''), "", "", $nSeg);
+ parent::Ellipse($x0, $y0, $r1, $r2, $angle, $astart. $afinish, ($close?'C':''), "", "", $nSeg);
}
function Stream()
{
- TCPDF::Output('', 'I');
+ parent::Output('', 'I');
}
function calcTextWrap($txt, $width, $spacebreak=false)
return array($txt2, $ret);
}
- function addTextWrap($xb, $yb, $w, $h, $txt, $align='left', $border=0, $fill=0, $spacebreak=false)
+ function addTextWrap($xb, $yb, $w, $h, $txt, $align='left', $border=0, $fill=0, $link = NULL, $stretch = 1, $spacebreak=false)
{
$ret = "";
if (!$this->rtl)
$align = 'R';
elseif ($align == 'left')
$align = 'L';
+ elseif ($align == 'center')
+ $align = 'C';
+ elseif ($align == 'justify')
+ $align = 'J';
}
else
$align = 'R';
- $txt = $this->calcTextWrap($txt, $w, $spacebreak);
+
+ // If horizontal scaling was requested, check to see if we're trying to scale
+ // too much. If so, cut back string first and then scale it.
+ $maxScaleFactor = 1.4;
+ if ($stretch == 1 || $stretch == 2)
+ $txt = $this->calcTextWrap($txt, $w * $maxScaleFactor, $spacebreak);
+ // Wrap text if stretching isn't turned on
+ else
+ $txt = $this->calcTextWrap($txt, $w, $spacebreak);
$ret = $txt[1];
$txt = $txt[0];
$this->SetXY($xb, $this->h - $yb - $h);
- $txt = TCPDF::unhtmlentities($txt);
+ $txt = parent::unhtmlentities($txt);
if ($this->isunicode && $this->encoding != "UTF-8")
$txt = iconv($this->encoding, "UTF-8", $txt);
- $this->Cell($w, $h, $txt, $border, 0, $align, $fill);
+ $this->Cell($w, $h, $txt, $border, 0, $align, $fill, $link, $stretch);
return $ret;
}
-/**
-* sets the colour for stroke operations
-*/
- function setStrokeColor($r,$g,$b,$force=0)
- {
- TCPDF::SetDrawColor($r,$g,$b);
- }
-/**
-* this sets the line drawing style.
-* width, is the thickness of the line in user units
-* cap is the type of cap to put on the line, values can be 'butt','round','square'
-* where the diffference between 'square' and 'butt' is that 'square' projects a flat end past the
-* end of the line.
-* join can be 'miter', 'round', 'bevel'
-* dash is an array which sets the dash pattern, is a series of length values, which are the lengths of the
-* on and off dashes.
-* (2) represents 2 on, 2 off, 2 on , 2 off ...
-* (2,1) is 2 on, 1 off, 2 on, 1 off.. etc
-* phase is a modifier on the dash pattern which is used to shift the point at which the pattern starts.
-*/
- function setLineStyle($width=1,$cap='',$join='',$dash='',$phase=0)
- {
- $this->SetLineWidth($width);
- }
function Text($x, $y, $txt, $stroke=0, $clip=false)
{
- TCPDF::Text($x,$y, TCPDF::unhtmlentities($txt), $stroke, $clip);
+ parent::Text($x,$y, parent::unhtmlentities($txt), $stroke, $clip);
}
} // end of class