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; }