Voir les messages sans réponses | Voir les sujets actifs Nous sommes le 13 Déc 2018, 12:25



Répondre au sujet  [ 3 messages ] 
Modifier le svg par programmation 
Auteur Message
Nouveau venu
Nouveau venu

Inscription: 07 Oct 2016, 14:54
Messages: 1
Répondre en citant le message
Message Modifier le svg par programmation
Bonjour

J'ai besoin de changer des valeurs d'attribut de balise d'un svg produit sur inkscape, à partir d'un script bash sur une centaine de fichier.
J'ai pas su le faire avec les fonction d'inkscape est ce que sauriez ou je puisse trouve de la ressource et exemple de code ou des outil xml qui me permette de le faire.

Pour le détail de ce je veux faire voir ici https://forum.ubuntu-fr.org/viewtopic.php?id=1997568


07 Oct 2016, 15:07
Profil
Admin d'Inkscape-fr
Avatar de l’utilisateur

Inscription: 27 Oct 2008, 21:31
Messages: 57
Répondre en citant le message
Message Re: Modifier le svg par programmation
Bonjour Jovial,

La solution me semblant la plus naturelle serait d'utiliser XSLT. C'est ce que font les documentalistes d'Inkscape pour générer les tutoriels (l'original est en docbook, et la transformation permet d'obtenir des fichiers SVG - intégrés à l'application - et HTML - pour le site web).

En gros, il s'agit de définir un fichier XSLT qui contient toutes les transformations souhaitées, puis d'appliquer ce modèle à tous les fichiers d'un dossier avec (par exemple) la commande xsltproc (il me semble que cette commande permet de faire tout un dossier d'un coup, et de copier le résultat dans un dossier différent si besoin).
J'y regarde de plus près un peu plus tard si je trouve un peu de temps.

Bonne journée !

_________________
Xubuntu 16.04 (Inkscape 0.92/master 64-bit), Windows 7 (0.92/master 64-bit).


11 Oct 2016, 09:18
Profil
Admin d'Inkscape-fr
Avatar de l’utilisateur

Inscription: 27 Oct 2008, 21:31
Messages: 57
Répondre en citant le message
Message Re: Modifier le svg par programmation
Bon, il a fallu que je m'y remette...

Voici un fichier modèle que devrait fonctionner pour ce cas :

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="@id[.='stop4158']">
    <xsl:attribute name="style">
      <xsl:value-of select="'stop-color:#ff00b0;stop-opacity:1;'"/>
    </xsl:attribute>
  </xsl:template>

</xsl:stylesheet>


Il suffit ensuite d'exécuter xsltproc dans un bash en passant ce modèle en argument, et ce pour chaque fichier (dans cet exemple, on envoie le résultat dans le dossier test/) :

Code:
 for file in *.svg; do xsltproc --output ./test/$file  color_change.xsl $file; done


Si tous tes stops partagent le même identifiant, le modèle va tous les changer avec le style donné.

Voilà, en espérant que ça aide un peu.

_________________
Xubuntu 16.04 (Inkscape 0.92/master 64-bit), Windows 7 (0.92/master 64-bit).


11 Oct 2016, 14:39
Profil
Afficher les messages postés depuis:  Trier par  
Répondre au sujet   [ 3 messages ] 

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Forum style by ST Software for PTF.
Traduction par: phpBB-fr.com