X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=XML%2FSvgToPdf.php;fp=XML%2FSvgToPdf.php;h=bb033f3577790b4797ad4b003deaa05ea99605cc;hb=8dc847fcdafbacab93e24d6eca7c6af44acdef3c;hp=c3b44b9c0a1d453a6f4745f8caa3e2a345869fe6;hpb=2d3bc6a3de6d011f275837daef9490829e782ecf;p=pear diff --git a/XML/SvgToPdf.php b/XML/SvgToPdf.php old mode 100644 new mode 100755 index c3b44b9c..bb033f35 --- a/XML/SvgToPdf.php +++ b/XML/SvgToPdf.php @@ -1,7 +1,7 @@ ".print_R($s,true). ""; if ($e) { @@ -77,72 +79,60 @@ class XML_SvgToPDF { $t = new XML_SvgToPDF; - $t->language = $data['language']; - require_once 'XML/Tree/Morph.php'; - + $t->language = @$data['language']; + /* $x = new XML_Tree_Morph( $svg, array( 'debug' => 0, 'filter' => array( - 'svg' => array($t, 'buildObject'), - 'image' => array($t, 'buildObject'), - 'text' => array($t, 'buildObject'), - 'tspan' => array($t, 'buildObject'), - 'rect' => array($t, 'buildObject'), - 'g' => array($t, 'buildObject'), - 'path' => array($t, 'buildObject'), - 'sodipodi:namedview' => array($t, 'buildNull'), - 'defs' => array($t, 'buildNull'), + 'svg' => array(&$t, 'buildObject'), + 'image' => array(&$t, 'buildObject'), + 'text' => array(&$t, 'buildObject'), + 'tspan' => array(&$t, 'buildObject'), + 'rect' => array(&$t, 'buildObject'), + 'g' => array(&$t, 'buildObject'), + 'path' => array(&$t, 'buildObject'), + 'sodipodi:namedview' => array(&$t, 'buildNull'), + 'defs' => array(&$t, 'buildNull'), ) ) ); $tree = $x->getTreeFromFile(); - //echo '
'; print_R($tree);      exit;
+              
         $tree = $t->buildobject($tree);
-       //   echo '
'; print_R($tree);      exit;
+        */
          //echo "
";
-       // $tree = $t->parseSvg($svg);
-        // echo "
";print_r($tree);exit;
+        $tree = $t->parseSvg($svg);
+       //echo "
";print_r($tree);exit;
         
         
         
         
         
         //echo "
";print_r($tree);exit;
-        $w = empty($tree->width) ? 0 : $tree->width;
-        $h = empty($tree->height) ? 0 : $tree->height;
-        $orientation =  (preg_replace('/[^0-9.]+/','', $w)*1) > (preg_replace('/[^0-9.]+/','', $h)*1) ? 'L' : 'P';
-        //var_dump($orientation);exit;
+        $orientation =  (preg_replace('/[^0-9.]+/','', $tree->width)*1) > (preg_replace('/[^0-9.]+/','', $tree->height)*1) ? 'L' : 'P';
+//var_dump($orientation);exit;
         $GLOBALS['_XML_SVGTOPDF']['options']['file'] = $svg;
 
-        if ($data['language'] == 'big5') {
-          //die("trying chinese");
-            
-               
-            require_once 'Fpdf/Unicode.php';
-
-            $pdf=new FPDF_Unicode($orientation ,'mm','A4');
-            $pdf->AddGBFont();
-            $pdf->AddBig5Font();
-            $pdf->AddUniCNShwFont(); 
-            $pdf->open();            
-
          
-        } else {
-            require_once  'Fpdf/tFPDF.php' ;
-
-            $pdf=new tFPDF($orientation ,'mm','A4');
-            $pdf->open();
-        }
+          //die("trying chinese");
+        require_once  'Fpdf/tFPDF.php' ;
 
-        $pdf->setAutoPageBreak(false);
+        $pdf = new tFPDF($orientation ,'mm','A4');
+        $pdf->AddFont('ARIALUNI','','ARIALUNI.ttf',true);
+        //print_R($pdf);exit;
+// 
+        $pdf->open();            
+        
+         $pdf->setAutoPageBreak(false);
         $pdf->AliasNbPages();
         // convert data to array.
         if (is_object($data)) {
             $data = (array) $data;
         }
+         
         // assoc. array of key => no of fields per page.
          $perPage = $tree->calcPerPage();
         //list($var,$perpage) = $tree->calcPerPage();
@@ -152,13 +142,14 @@ class XML_SvgToPDF {
 //          $data['transactions'][0]->desc = 'abcdefghijklmnopqrstuvwxyz Z';
 //           print_r($data['transactions'][0]->desc);
         // no dynamic blocks:
+        
+        
          if (!$perPage || empty($data)) {
             $pdf->addPage();
             $tree->writePDF($pdf,$data);
             $t->debug($tree);
             return $pdf;
         }
-        
         // build blocks of data for each page.
         $haveData = true;
         $page = 0;
@@ -200,12 +191,11 @@ class XML_SvgToPDF {
             $page++;
                 
             $t->debug("PAGE $page");
+         
             
             $pdf->addPage();
-
             $tree->writePDF($pdf,$page_data);
-                
-      
+            
             //$tree->writePDF($pdf,$data);
         }
        
@@ -234,20 +224,16 @@ class XML_SvgToPDF {
     
     function parseSvg($svgFileName)
     {
-        libxml_use_internal_errors(true);
         $d = new DOMDocument();
         $d->load($svgFileName);
        // print_r($d);
         return $this->parseNode($d->documentElement);
     }
     
-    function parseXMLNode($n)
+    function parseNode($n)
     {
         // do children first..
         //print_r(array("PARSENODE:",$n));
-        if (empty($n)) {
-            return array();
-        }
         $children = array();
         if ($n->childNodes->length) {
             foreach($n->childNodes as $cn) {
@@ -270,7 +256,6 @@ class XML_SvgToPDF {
             return $children;
             
         }
-        // fixme.. this is the Dom Version..
         $ret = $this->buildObject($n,$children);
         
         return $ret;
@@ -284,12 +269,34 @@ class XML_SvgToPDF {
     function buildNull($node) {
         return;
     }
-    function buildObject($node )
+    function buildObject($node, $children)
     {
-        require_once 'XML/SvgToPdf/Base.php';
-        
-        return XML_SvgToPDF_Base::factory($node);
-         
+        $class = 'XML_SvgToPDF_'.$node->tagName;
+        /*
+        if (strlen(trim($node->content)) && (@$this->language)) {
+            $node->language = $this->language;
+        }
+        */
+ 
+
+        //echo "look for $class?";
+        if (!class_exists($class)) {
+            // try loading it..
+            $file = dirname(__FILE__) . '/SvgToPdf/'.ucfirst(strtolower($node->tagName)). '.php';
+            $this->debug("loading  $file");
+            if (file_exists($file)) {
+                require_once 'XML/SvgToPdf/'.ucfirst(strtolower($node->tagName)) . '.php';
+            }
+        }
+        // now if it doesnt exist..
+        if (!class_exists($class)) {
+            $this->debug("can not find $class");
+           $class = 'XML_SvgToPDF_Base';
+        }
+        $r = new $class;
+        $r->children = $children;
+        $r->fromXmlNode($node);
+        return $r;
     }