function construct($svg, $data = array()) { $t = new XML_SvgToPDF(); $x = new XML_Tree_Morph($svg, array('debug' => 0, 'filter' => array('svg' => 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(); $tree = $t->buildobject($tree); $orientation = $tree->width > $tree->height ? 'L' : 'P'; $pdf = new FPDF($orientation, 'mm', 'A4'); $pdf->open(); $pdf->setAutoPageBreak(false); $pdf->AliasNbPages(); // convert data to array. if (is_object($data)) { $data = (array) $data; } // no data page.. if (empty($data)) { $pdf->addPage(); $tree->writePDF($pdf, $data); $t->debug($tree); return $pdf; } // work out how many pages... list($var, $perpage) = $tree->calcPerPage(); if ($var == '') { die('No dynamic group found'); } if (!isset($data[$var])) { die('Incorrect dynamic group name'); } $alldata = $data[$var]; $page = 0; while (count($alldata)) { $page++; $t->debug("<B>PAGE {$page}<B>"); $page_data = array_splice($alldata, 0, $perpage); $data[$var] = $page_data; $pdf->addPage(); $tree->writePDF($pdf, $data); } $t->debug($tree); return $pdf; }