Converting text into path (svg) on server?
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.
You can also tell inkscape to open your file in gui mode and then issue commands. The following command line input opens an svg, selects all nodes, and converts them into paths. This will allow you to save your converted svg back to svg.
inkscape -f your.svg --with-gui --verb EditSelectAll --verb ObjectToPath --verb FileSave --verb FileQuit
Beware, this will override your file!
Or even simpler, use EasySVG, this library converts a text to a SVG definition. You can then put this definition in a path, or whatever.
The definition is based on a font's SVG file but you can easily convert TTF files to SVG...