J'ai des images SVG produites par PlantUML, qui a des parties de dessin en dehors de la toile. Il est difficile d'utiliser de telles images et j'ai besoin de recadrer le dessin à la taille de la toile. Comme je produis de toute façon des diagrammes UML avec un script, il serait également très efficace d'y effectuer un recadrage.
Jusqu'à présent, j'ai essayé deux choses: a) redimensionner le canevas au dessin avec Inkscape
inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose *.svg
Cela fonctionne bien, mais j'ai besoin de recadrer le dessin à la taille du canevas et cette opération semble indisponible.
b) redimensionner avec rsvg-convert
rsvg-convert image.svg -w 1870 -h 1195 -f svg -o image.svg
Cela recadre exactement à la taille souhaitée, mais la taille de l'image augmente ~ 10 fois car il y a maintenant des images binaires intégrées dans SVG. Ce n'est pas acceptable pour moi.
svg
format est un format ascii basé sur xml, donc le moyen le plus simple devrait être simplement d'utilisersed
ou votre outil de manipulation de texte préféré pour insérer ou modifier une ligne qui définit le cadre de sélection. Cela ne toucherait même pas les autres contenus du fichier. Essayez de le faire manuellement une fois sur un exemple de fichier svg (dans un éditeur de texte), puis traduisez vos actions en script.Réponses:
J'ai trouvé un moyen inélégant de le faire en utilisant la proposition d'Orion. En supposant
$svg_file_name
qu'une variable contient le chemin du fichier vers une image SVG.Nous avons d'abord besoin de la largeur et de la hauteur de l'image
PlantUML produit le diagramme en tant que groupe unique (tag
<g>
), plaçons le rectangle de la taille du canevas sur ce groupeMaintenant, ouvrez l'image avec Inkscape, sélectionnez tout et coupez le groupe avec le rectangle
Avec la dernière version d'Inkscape, il faut quitter Inkscape au lieu de fermer le fichier
la source