O que você vai aprender

  • Executar o Inkscape via linha de comando para automação em lote
  • Usar flags essenciais: --export-filename, --export-type, --actions
  • Criar scripts shell para processar múltiplos arquivos SVG
  • Integrar Inkscape CLI em pipelines de CI/CD para geração automática

Scripts de Automação🔗

inkscape CLI🔗

Inkscape tem interface de linha de comando completa.

Comandos Básicos🔗

# Exportar PNG
inkscape input.svg --export-filename=output.png --export-area-page --export-dpi=300

# Exportar PDF
inkscape input.svg --export-filename=output.pdf --export-type=pdf

# Exportar com dimensões específicas
inkscape input.svg --export-filename=output.png --export-width=800 --export-height=600

Flags Principais🔗

FlagFunção
--export-filenameArquivo de saída
--export-typeTipo: png, pdf, svg, eps, ai
--export-area-pageExportar página completa
--export-area-drawingExportar só desenho
--export-dpiDPI para raster (72, 150, 300)
--export-widthLargura em pixels
--export-heightAltura em pixels

Batch Processing🔗

Loop Bash🔗

#!/bin/bash
for f in *.svg; do
  name="${f%.svg}"
  inkscape "$f" --export-filename="${name}.png" --export-dpi=150
done

Parallel com GNU Parallel🔗

ls *.svg | parallel inkscape {} --export-filename={}.png --export-dpi=150

Python Script🔗

#!/usr/bin/env python3
import subprocess
import os

svg_dir = "input/"
output_dir = "output/"

for filename in os.listdir(svg_dir):
    if filename.endswith(".svg"):
        input_path = os.path.join(svg_dir, filename)
        output_path = os.path.join(output_dir, filename.replace(".svg", ".png"))
        
        subprocess.run([
            "inkscape", input_path,
            "--export-filename", output_path,
            "--export-dpi", "300"
        ])

Modificar SVG via Python🔗

#!/usr/bin/env python3
import inkex

class BatchColorChange(inkex.EffectExtension):
    def add_arguments(self, pars):
        pars.add_argument("--from-color", type=str, default="#ff0000")
        pars.add_argument("--to-color", type=str, default="#00ff00")

    def effect(self):
        from_color = self.options.from_color
        to_color = self.options.to_color
        
        for node in self.svg.selection:
            if node.style.get('fill') == from_color:
                node.style['fill'] = to_color

if __name__ == "__main__":
    BatchColorChange().run()

Automação com Make🔗

SVG_FILES := $(wildcard designs/*.svg)
PNG_FILES := $(SVG_FILES:.svg=.png)

%.png: %.svg
	inkscape $< --export-filename=$@ --export-dpi=150

all: $(PNG_FILES)

Agendar com Cron🔗

# Editar crontab
crontab -e

# Executar todo dia às 3h
0 3 * * * /path/to/batch-export.sh

Use --export-area-drawing em vez de --export-area-page se quiser evitar margens em branco.

Você aprendeu

  • O Inkscape CLI permite exportação, conversão e manipulação sem interface gráfica
  • Actions (--actions) substituem a antiga sintaxe de flags para operações complexas
  • Scripts shell/batch podem processar centenas de arquivos em lote automaticamente

Referências🔗