Tenho imagens SVG produzidas pelo PlantUML, que tem algumas partes do desenho fora da tela. Isso dificulta o uso dessas imagens e preciso cortar o desenho no tamanho da tela. Como eu produzo diagramas UML com script de qualquer maneira, seria realmente eficiente executar um corte lá também.
Até agora, tentei duas coisas: a) redimensionar a tela para desenhar com o Inkscape
inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose *.svg
Isso funciona bem, mas preciso cortar o desenho no tamanho da tela e esta operação parece estar indisponível.
b) redimensionar com rsvg-convert
rsvg-convert image.svg -w 1870 -h 1195 -f svg -o image.svg
Isso faz exatamente o corte no tamanho desejado, mas o tamanho da imagem aumenta ~ 10 vezes, pois agora existem algumas imagens binárias incorporadas ao SVG. Isso não é aceitável para mim.
command-line
image-manipulation
svg
inkscape
divanov
fonte
fonte
svg
format é um formato ascii baseado em xml; portanto, a maneira mais fácil deve ser usarsed
ou sua ferramenta de manipulação de texto favorita para inserir ou modificar uma linha que define a caixa delimitadora. Isso nem tocaria o outro conteúdo do arquivo. Tente fazê-lo manualmente uma vez em um arquivo svg de exemplo (em um editor de texto) e depois traduza suas ações em um script.Respostas:
Encontrei uma maneira deselegante de fazer isso usando a proposta do orion. Supondo que
$svg_file_name
é uma variável que contém o caminho do arquivo para uma imagem SVG.Primeiro precisamos da largura e altura da imagem
PlantUML produz o diagrama como um único grupo (tag
<g>
), vamos colocar o retângulo do tamanho da tela sobre esse grupoAgora abra a imagem com o inkscape, selecione tudo e corte o grupo com o retângulo
Com o Inkscape mais recente, é necessário sair do Inkscape em vez de fechar o arquivo
fonte