Try this:
- Create a svg template file in Inkscape (see an example below).
- Open that file with a text editor, and place some placeholder tokens for the variables you want to change: The font, and the text.
- Create a web page so the user can select the font and write the text.
- Retrieve that data in server.
- Read the template file, and change the placeholder tokens with the user data.
- Call Inkscape through command line.
inkscape template.svg --export-text-to-path --export-id=maintext --export-pdf=new_file.pdf
Now, I know, I know, you said you want an svg output... I tried the option:
--export-plain-svg=new_file.svg
But according to the Inkscape man page:
-T, --export-text-to-path
Convert text objects to paths on export, where applicable (for PS, EPS, and PDF export).
Soooo... can't get plain svg export and exporting text to path :S ... BTW this should be filled as a bug.
You can serve the PDF, or call again:
inkscape -l new_file.svg new_file.pdf
Which... I know, is quite stupid. No, really, file a bug on Inkscape :P
This is the example Inkscape template:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="440.29297"
height="39.824219"
id="svg2">
<defs
id="defs4" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<text
x="-3.4374955"
y="30.390625"
id="maintext"
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:[FONT_PLACEHOLDER]"><tspan
x="-3.4374955"
y="30.390625"
id="tspan3006"
style="fill:#000000">[TEXT_PLACEHOLDER]</tspan></text>
</svg>
Kind regards.