use Cubist\Util\Str;
use Cubist\Util\Text;
use DOMDocument;
+use DOMElement;
use DOMNode;
use DOMXPath;
use Cubist\PDF\CommandLine\FWSTK;
$xpath->registerNamespace('svg', 'http://www.w3.org/2000/svg');
$xpath->registerNamespace('xlink', 'http://www.w3.org/1999/xlink');
$xpath->registerNamespace("php", "http://php.net/xpath");
- $toDelete = array(
-// '//svg:defs/svg:clipPath',
-// '//svg:defs/svg:image',
-// '//svg:defs/svg:path',
-// '//svg:defs/svg:pattern',
+ $toDelete = [
'//svg:defs/svg:g[starts-with(@id, "surface")]//svg:path',
'//svg:defs/svg:g[starts-with(@id, "surface")]//svg:rect',
'//svg:defs/svg:g[starts-with(@id, "surface")]//svg:use[starts-with(@xlink:href, "#image")]',
'/svg:svg/svg:g[@id="surface1"]//svg:filter',
'/svg:svg/svg:g[@id="surface1"]//svg:use[starts-with(@xlink:href, "#image")]',
'//svg:svg/svg:g[@id="surface1"]//svg:use[starts-with(@xlink:href, "#image")]',
- //'//svg:image',
- );
+ ];
+ $toDeleteIfOrphan = [
+ '//svg:image',
+ ];
- //global $svglog;
- //$svglog = array('XPATH : ' . print_r($xpath, true));
foreach ($toDelete as $q) {
$list = $xpath->query($q);
- // $svglog[] = "Evaluate xpath query " . $q;
- // $svglog[] = 'Give ' . $list->length . ' results';
- // $svglog[] = 'Deleting Nodes in ' . print_r($list, true);
if (count($list)) {
foreach ($list as $node) {
/* @var $node DOMNode */
}
}
}
+
+ foreach ($toDeleteIfOrphan as $q) {
+ $list = $xpath->query($q);
+ if (count($list)) {
+ foreach ($list as $node) {
+ /* @var $node DOMElement */
+ $id = $node->getAttribute('id');
+ if ($xpath->query('//*[@id="' . $id . '"]')->count() > 0) {
+ $parent = $node->parentNode;
+ $parent->removeChild($node);
+ }
+ }
+ }
+ }
+
$res = $svg->saveXML();
$res = preg_replace('/<g clip-path="url\(#clip\d+\)" clip-rule="nonzero"\/>/', '', $res);
while (true) {