A readable/writable stream that manipulates SVG files. The primary use
case is removing elements whose id attribute isn't on a
whitelist. This is useful as a preprocessor to inkscape that only
supports a single --export-id=... argument.
Example:
var SvgFilter = require('svgfilter'),
fs = require('fs');
fs.createReadStream('source.svg')
.pipe(new SvgFilter({ keepId: ['foo', 'bar'] }))
.pipe(fs.createWriteStream('target.svg'));As an experimental feature you can run inline JavaScript found in the
SVG file itself by specifying the runScripts option. The JavaScript
can manipulate the SVG DOM however it wants through the document
global. The script also has access to the globals console, window,
and svgFilter. The latter is the options object passed to the
SvgFilter constructor, so it's possible to carry out specific
instructions, eg. change the color of an icon.
Given blackCircle.svg:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:svg="http://www.w3.org/2000/svg" height="48px" width="48px">
<circle id="theCircle" cx="100" cy="50" r="40" stroke="black" />
<script>
document.getElementById('theCircle').setAttribute('stroke', svgFilter.circleColor);
</script>
</svg>var SvgFilter = require('svgfilter'),
fs = require('fs');
require('fs')
.createReadStream('blackCircle.svg')
.pipe(new SvgFilter({ runScript: true, circleColor: 'maroon' }))
.pipe(process.stdout);This will produce an SVG file where the stroke attribute of the
circle element has been changed to maroon. The runScript option
can also specify the id of the script to run, or an array of ids.
3-clause BSD license -- see the LICENSE file for details.