Tengo imágenes SVG producidas por PlantUML, que tiene algunas partes de dibujo fuera del lienzo. Hace que sea difícil usar esas imágenes y necesito recortar el dibujo al tamaño del lienzo. Como produzco diagramas UML con script de todos modos, sería realmente eficiente realizar un recorte allí también.
Hasta ahora he intentado dos cosas: a) cambiar el tamaño del lienzo para dibujar con Inkscape
inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose *.svg
Esto funciona bien, pero necesito recortar el dibujo al tamaño del lienzo y esta operación parece no estar disponible.
b) cambiar el tamaño con rsvg-convert
rsvg-convert image.svg -w 1870 -h 1195 -f svg -o image.svg
Esto hace exactamente el recorte al tamaño deseado, pero el tamaño de la imagen aumenta ~ 10 veces ya que ahora hay algunas imágenes binarias incrustadas en SVG. Esto no es aceptable para mi.
command-line
image-manipulation
svg
inkscape
divanov
fuente
fuente
svg
format es un formato ascii basado en xml, por lo que la forma más fácil debería ser usarsed
su herramienta de manipulación de texto favorita para insertar o modificar una línea que establece el cuadro delimitador. Esto ni siquiera tocaría los otros contenidos del archivo. Intente hacerlo manualmente una vez en un archivo svg de ejemplo (en un editor de texto) y luego traduzca sus acciones en un script.Respuestas:
Encontré una manera poco elegante de hacerlo usando la propuesta de Orion. Suponiendo que
$svg_file_name
es una variable que contiene la ruta del archivo a una imagen SVG.Primero necesitamos ancho y alto de imagen
PlantUML produce el diagrama como un solo grupo (etiqueta
<g>
), coloquemos un rectángulo de tamaño de lienzo sobre ese grupoAhora abra la imagen con Inkscape, seleccione todo y recorte el grupo con el rectángulo
Con la última versión de Inkscape, es necesario salir de Inkscape en lugar de cerrar el archivo
fuente