[0004756] Amounts in words on documents were printed in user language instead of...
[fa-stable.git] / reporting / includes / class.pdf.inc
index 778459dc7124c603b6382df824a2ae6d965172a9..fb4cbf62d8f3425611e6718669e776da4e74522e 100644 (file)
@@ -59,29 +59,72 @@ define("K_RE_PATTERN_ARABIC", "/(
                        )/x");
 
 include_once (dirname(__FILE__).'/tcpdf.php');
+include_once (dirname(__FILE__).'/fpdi/fpdi.php');
 
-class Cpdf extends TCPDF {
+class Cpdf extends FPDI {
 
-       function Cpdf($pageSize='A4', $l=array(), $pageOrientation='P')
+       function __construct($pageSize='A4', $lang=null, $pageOrientation='P')
        {
+               parent::__construct($pageOrientation, 'pt', $pageSize);//, $uni, $enc);
+               $this->SetLang($lang);
+               $this->setPrintHeader(false);
+               $this->setPrintFooter(false);
+               $this->setPDFVersion("1.3");
+               $this->setAutoPageBreak(0);
+               $this->SetLineWidth(1);
+               $this->cMargin = 0;
+       }
+       /*
+               Set lamguage for next report
+       */
+       function SetLang($code=null) 
+       {
+               global $installed_languages, $dflt_lang, $path_to_root, $local_path_to_root, $GetText;
+
+               if (!$code)
+                       $code = $dflt_lang;
+               else
+                       install_hooks($code);
+
+               $lang = array_search_value($code, $installed_languages, 'code');
+               $GetText->set_language($lang['code'], strtoupper($lang['encoding']));
+
+               // $local_path_to_root is  set inside find_custom_file.
+               // Select extension domain if po file is provided
+               // otherwise use global translation.
+               if (file_exists($local_path_to_root.'/lang/'.$lang['code'].'/LC_MESSAGES/'.$lang['code'].'.po'))
+                       $GetText->add_domain($lang['code'], $local_path_to_root . "/lang");
+               else
+                       $GetText->add_domain($lang['code'], $path_to_root . "/lang", @$lang['version']);
+               // re-read translated sys names.
+               include($path_to_root.'/includes/sysnames.inc');
+
+               $l = array('a_meta_charset' => strtoupper($lang['encoding']), 
+                       'a_meta_dir' => @$lang['rtl'] ? 'rtl' : 'ltr',
+                       'a_meta_language' => $code, 'w_page' => 'page');
+
                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');
                $enc = $l['a_meta_charset'];
                $uni = ($enc == 'UTF-8' || $enc == 'GB2312' ? true : false);
                if ($uni)
                        ini_set("memory_limit", "48M");
-               $this->TCPDF($pageOrientation, 'pt', $pageSize, $uni, $enc);
+
+               $this->isunicode = $uni;
                $this->setLanguageArray($l);
-               $this->setPrintHeader(false);
-               $this->setPrintFooter(false);
-               $this->setPDFVersion("1.3");
-               $this->setAutoPageBreak(0);
-               $this->AddPage();
+               if ($uni)
+               {
+                               global $unicode, $unicode_mirror, $unicode_arlet, $laa_array, $diacritics;
+                               include_once(dirname(__FILE__)."/unicode_data2.php");
+               }
+               $this->encoding = strtoupper($lang['encoding']);
 
-               $this->SetLineWidth(1);
-               $this->cMargin = 0;
+               $this->FontFamily = 'helvetica';
+               $this->FontStyle = '';
+               $this->FontSizePt = 12;
        }
 
+
        // $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.
@@ -133,7 +176,14 @@ class Cpdf extends TCPDF {
                                        default :               $fontname = "freesans5";        break;
                                }
                        }
-                       // else use built-in adobe fonts helvetica.
+                       elseif ($this->encoding === "ISO-8859-13")
+            {
+                switch ($this->l['a_meta_language'])
+                {
+                    default :        $fontname = "freesans13";     break;
+                }
+            }
+            // else use built-in adobe fonts helvetica.
                }
                $this->SetFont($fontname, $style);
        }
@@ -172,24 +222,9 @@ class Cpdf extends TCPDF {
 
        function addInfo($label,$value)
        {
-               if($label=='Title')
-               {
-                       $this->SetTitle($value);
-               }
-               if ($label=='Subject')
-               {
-                       $this->SetSubject($value);
-               }
-               if($label=='Creator')
-               {
-                       // The Creator info in source is not exactly it should be ;)
-                       $value = str_replace( "ros.co.nz", "tcpdf.org", $value );
-                       $value = str_replace( "R&OS", "", $value );
-                       $this->SetCreator( $value );
-               }
-               if($label=='Author')
-               {
-                       $this->SetAuthor($value);
+               if (in_array($label, array( 'Title', 'Subject', 'Author', 'Creator'))) {
+                       $seter = "Set{$label}";
+                       $this->$seter($value);
                }
        }
 
@@ -224,14 +259,14 @@ class Cpdf extends TCPDF {
        * nSeg is not allowed to be less than 2, as this will simply draw a line (and will even draw a
        * pretty crappy shape at 2, as we are approximating with bezier curves.
        */
-       function ellipse($x0,$y0,$r1,$r2=0,$angle=0,$nSeg=8,$astart=0,$afinish=360,$close=1,$fill=0)
+       function ellipse($x0,$y0,$r1,$r2=0,$angle=0,$nSeg=8,$astart=0,$afinish=360,$close=1,$fill=0, $dummy=null)
        {
                parent::Ellipse($x0, $y0, $r1, $r2, $angle, $astart. $afinish, ($close?'C':''), "", "", $nSeg);
        }
 
-       function Stream()
+       function Stream($fname='')
        {
-               parent::Output('', 'I');
+               parent::Output($fname, 'I');
        }
 
        function calcTextWrap($txt, $width, $spacebreak=false)
@@ -273,20 +308,30 @@ class Cpdf extends TCPDF {
                                $align = 'J';
                }
                else
-                       $align = 'R';
+               {
+                       if ($align == 'right')
+                               $align = 'R';// This may need to be 'L'
+                       elseif ($align == 'left')
+                               $align = 'R';
+                       elseif ($align == 'center')
+                               $align = 'C';
+                       elseif ($align == 'justify')
+                               $align = 'J';
+               }
 
+               $txt = parent::unhtmlentities($txt);
                // 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);
+                       $txt = $this->calcTextWrap($txt, $w * $maxScaleFactor, $spacebreak);
                // Wrap text if stretching isn't turned on
                else
-               $txt = $this->calcTextWrap($txt, $w, $spacebreak);
+                       $txt = $this->calcTextWrap($txt, $w, $spacebreak);
                $ret = $txt[1];
                $txt = $txt[0];
                $this->SetXY($xb, $this->h - $yb - $h);
-               $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, $link, $stretch);
@@ -300,4 +345,3 @@ class Cpdf extends TCPDF {
 
 } // end of class
 
-?>
\ No newline at end of file