Evolus Pencil est un puissant outil de maquette FOSS GUI. Malheureusement, il ne prend pas en charge l'exportation SVG hors de la boîte. Est-il possible de convertir mes maquettes de crayon en SVG?
Présentation
Il s'avère qu'il existe un moyen de le faire en utilisant xsltproc
, un processeur xslt en ligne de commande. La feuille de style que nous allons utiliser a été développée par Robert Kosten et publiée sur le tracker de problèmes de la page du projet evolus Pencil .
Cité dans le rapport de bogue:
J'adorerais l'avoir via l'interface utilisateur, mais jusque-là, j'ai écrit une petite feuille XSLT qui essentiellement ne retire que tout de http://www.evolus.vn/Namespace/Pencil namespace (Généralement, les données de gestion ne sont pas nécessaires dans une exportation de toute façon). Le fichier résultant devrait fonctionner correctement dans Firefox (où la balise foreignObject de SVG est bien prise en charge), mais les bibliothèques comme batik (utilisé dans Apache fop par exemple) auront des problèmes avec le XHTML, XUL ou XLink. J'ai l'intention d'étendre la feuille pour prendre en charge au moins quelques-uns des éléments que je rencontre, mais je ne ferai pas de promesses que je ne peux pas tenir ;-)
Le fichier joint peut également être trouvé dans le cadre de ma collection d'outils (utilisé pour générer DocBook puis PDF pour mes projets): https://github.com/Robert- Kosten/de.robertkosten.tools/blob/master/xsl/ep2svg.xsl
Il est actuellement sous GPLv3, mais je serais prêt à le publier sous GPLv2 afin que personne n'ait à invoquer "toute version ultérieure" si quelqu'un souhaite l'inclure dans son logiciel ;-)
Installation
Téléchargez la feuille de style à partir du lien ci-dessus ou copiez et collez le passage suivant dans un fichier nommé ep2svg.xsl
:
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of de.robertkosten.tools. de.robertkosten.tools is
free software: you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.
de.robertkosten.tools is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details. You should have received a copy of the GNU
General Public License along with de.robertkosten.tools. If not, see
<http://www.gnu.org/licenses/>.
I suggest calling this with:
xsltproc -o dir/ ep2svg.xsl input.ep
@author Robert Kosten
-->
<xsl:stylesheet version="1.0" extension-element-prefixes="exsl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/2000/svg" xmlns:p="http://www.evolus.vn/Namespace/Pencil" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:exsl="http://exslt.org/common">
<xsl:output omit-xml-declaration="yes" />
<xsl:strip-space elements="p:Document p:Pages p:Page"/>
<xi:include href="includes/tools.xsl" />
<xsl:template match="/p:Document">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="p:Pages">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="p:Page">
<exsl:document href="{p:Properties/p:Property[@name='name']}.svg" method="xml" version="1.0" encoding="utf-8" doctype-public="-//W3C//DTD SVG 1.1//EN" doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" media-type="image/svg+xml">
<svg version="1.1">
<xsl:apply-templates />
</svg>
</exsl:document>
</xsl:template>
<xsl:template match="p:Content">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*[namespace-uri() != 'http://www.evolus.vn/Namespace/Pencil']">
<xsl:copy>
<xsl:copy-of select="@*[namespace-uri() != 'http://www.evolus.vn/Namespace/Pencil']" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<!-- Void -->
</xsl:template>
</xsl:stylesheet>
Enregistrez le script suivant sous ep2svg.sh
:
#!/bin/bash
# converts evol.us Pencil mockup files to svg
# (c) 2013 Glutanimate (http://askubuntu.com/users/81372/)
# released under GNU GPL v2
# XSL source: (c) 2013 Robert Kosten (https://code.google.com/p/evoluspencil/issues/detail?id=260#c1)
XSLFILE="./ep2svg.xsl"
WORKINGDIR=$(dirname "$1")
xsltproc -o "$WORKINGDIR"/ "$XSLFILE" "$@"
Assurez-vous de pointer XSLFILE
au bon endroit.
Usage:
ep2svg.sh <mockup1.ep> <mockup2.ep> ...
Si vous utilisez les maquettes avec Java et développement maven, vous pouvez utiliser le plugin maven crayon2svg-maven-plugin .