public function SVG::flush in Forena Reports 8
Write the output to disk.
Return value
mixed
Overrides DocumentBase::flush
File
- src/
FrxPlugin/ Document/ SVG.php, line 34 - SVG Embedded SVG Graph as it's own document. @author davidmetzler
Class
- SVG
- Provides SVG file exports
Namespace
Drupal\forena\FrxPlugin\DocumentCode
public function flush() {
$output = '';
$svg = NULL;
$doc = new \DomDocument();
$xml_body = '<html><body>' . $this->write_buffer . '</body></html>';
$doc->formatOutput = FALSE;
$doc->strictErrorChecking = FALSE;
libxml_use_internal_errors(true);
$doc
->loadXML($xml_body);
libxml_clear_errors();
$xml = simplexml_import_dom($doc);
// Extract first SVG from document.
$xml
->registerXPathNamespace('__empty_ns', 'http://www.w3.org/2000/svg');
if ($xml) {
$svg = $xml
->xpath('//__empty_ns:svg');
if (!$svg) {
$svg = $xml
->xpath('//svg');
}
}
if ($svg) {
$output .= $svg[0]
->asXML();
}
else {
$output = '<svg/>';
}
// Add in namespaces
if (!strpos($output, 'xmlns')) {
$output = str_replace('<svg', '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"', $output);
}
return $output;
}