2017-10-20 14 views
0

Je veux combiner des objets SVG à partir de fichiers avec de nouveaux éléments que j'ai besoin de créer (en-têtes et lignes)Comment décompresser un objet python pour transformer le contenu en un autre objet/texte?

J'utilise SVGWRITE pour créer de nouveaux objets.
https://github.com/mozman/svgwrite

Et SVGUTILS pour saisir des fichiers SVG à partir du disque/web et combiner. https://svgwrite.readthedocs.io/en/master/classes/svg.html

Je souhaite passer un objet SVG créé par SVGWRITE à SVGUTILS. SVGUTILS peut prendre un objet XML SVG.

svgutils.transform.fromstring(text) 

SVGWRITE crée des objets python

class svgwrite.container.SVG(insert=None, size=None, **extra) 

ou

class svgwrite.drawing.Drawing(filename=u'noname.svg', size=(u'100%', u'100%'), **extra) 

Comment puis-je transformer un objet SVGWRITE en texte que SVGUTILS peut accepter? Ou quelle est la stratégie pour déterminer comment décompresser un objet SVGWRITE pour le transformer en un objet ou un texte SVGUTILS?

Répondre

1

Il semble que l'interface la plus simple entre les deux bibliothèques soit celle des fichiers. Donc, si vous commencez avec l'objet svgwrite, vous pouvez ouvrir le fichier en utilisant svgutils de la manière suivante.

import svgutils.transform as sg 
import svgwrite 

dwg = svgwrite.Drawing('test.svg', profile='tiny') 
dwc.save() 

usig_svgutils = sg.fromfile('test.svg') 
+0

Merci! J'espérais ne pas utiliser de fichiers. On dirait une étape intermédiaire ... – kalmdown

+0

@kalmdown, peut-être y a-t-il un moyen de le faire d'une autre manière. Mais je ne parierais pas dessus. Mais sinon, n'hésitez pas à accepter ma réponse :) – Jonathan