Introduction
Manipuler des graphismes vectoriels SVG depuis la ligne de commande s’avère indispensable pour automatiser la génération d’assets ou de rapports techniques. Ce tutoriel détaille l’utilisation de l’utilitaire CLI cairosvg sous Ubuntu, de son déploiement initial jusqu’à la rasterisation avancée en PNG ou PDF. Nous aborderons également le redimensionnement précis, l’ajustement de la résolution (DPI) et l’élaboration de scripts Bash pour traiter vos fichiers en masse.
1. Installation de cairosvg et création d’un fichier SVG de test
Pour mettre en place l’environnement requis sur Ubuntu, nous installons le paquet officiel python3-cairosvg via le gestionnaire APT en exécutant sudo apt-get update -qq && sudo apt-get install -y python3-cairosvg.

Reposant sur la bibliothèque graphique Cairo, l’utilitaire cairosvg se distingue par son efficacité à convertir des illustrations vectorielles en rendus matriciels ou imprimables (PNG, PDF, PostScript).
Vérifions la présence du binaire ainsi que sa version opérationnelle grâce à cairosvg --version.
⚙️ [Paramètres essentiels]
-f, --format : définit le format de sortie désiré (png, pdf, ps, svg).-o, --output : indique le chemin d’accès du fichier de destination généré.-w, --width : impose la largeur de l’image résultante en pixels.-h, --height : configure la hauteur ciblée en pixels.-s, --scale : applique un facteur multiplicateur d’échelle par rapport aux dimensions d’origine.-d, --dpi : détermine la densité de pixels par pouce (DPI) lors de la rastérisation.-b, --background : substitue un fond opaque personnalisé à la transparence native.

Afin de valider nos tests, nous générons rapidement une illustration géométrique simple nommée sample.svg à l’aide d’un bloc Here Document couplé à la commande cat :

Un coup d’œil aux propriétés du fichier nouvellement créé via ls -lh sample.svg permet de s’assurer de son intégrité et d’observer son empreinte sur le disque.

2. Conversion standard d’un SVG vers PNG et PDF
Pour transformer notre vecteur en image matricielle PNG, la syntaxe directe fait appel à cairosvg sample.svg -o sample.png.
Grâce à l’analyse de l’extension de sortie dans l’argument -o, l’outil déduit automatiquement le format PNG sans exiger d’option explicite de type.

Interrogeons ensuite les métadonnées de l’image obtenue via file sample.png pour confirmer le codage du fichier, ses dimensions et sa structure colorimétrique.

Le moteur de rendu permet également d’exporter l’illustration vers un format vectoriel imprimable et paginé. Exécutez cairosvg sample.svg -o sample.pdf pour compiler le graphique en document PDF prêt pour la publication ou l’impression.

La commande file sample.pdf confirme que le résultat respecte scrupuleusement les spécifications du format PDF standard.

3. Ajustement des dimensions, de l’échelle et de la densité (DPI)
Lorsque des dimensions précises sont exigées par vos spécifications graphiques, il est possible de fixer la largeur et la hauteur cibles en lançant cairosvg sample.svg -o sample_800px.png -W 800 -H 800.
Les drapeaux -W et -H redimensionnent explicitement la zone de rendu à 800×800 pixels.

Pour agrandir l’illustration tout en conservant strictement ses proportions initiales, appliquez cairosvg sample.svg -o sample_scale2x.png -s 2.0.
L’indicateur de zoom -s configuré sur 2.0 produit une version deux fois plus grande sans aucune perte de netteté vectorielle.

Dans l’optique d’un tirage papier ou d’un affichage haute densité (Retina/HiDPI), l’option de rastérisation cairosvg sample.svg -o sample_300dpi.png -d 300 entre en jeu.
Le paramètre -d rehausse la définition à 300 DPI, garantissant un rendu d’une grande finesse visuelle.

La comparaison des fichiers générés s’effectue simplement avec ls -lh sample*.png.
Vous constaterez directement l’impact des différents réglages de taille et de densité sur le poids final des images sur votre stockage.

4. Automatisation du traitement par lots en script Bash
Pour simuler un pipeline de traitement par lots, préparons un répertoire de travail contenant plusieurs sources en saisissant mkdir -p svg_batch && cp sample.svg svg_batch/icon1.svg && cp sample.svg svg_batch/icon2.svg.
![]()
L’automatisation s’articule aisément autour d’une boucle for couplée à l’expansion de variables shell standard (${f%.svg}.png) : for f in svg_batch/*.svg; do cairosvg "$f" -o "${f%.svg}.png"; done.
Cette commande itère sur chaque fichier SVG du dossier, substitue son suffixe et lance la conversion de manière totalement autonome.

Listons le contenu du répertoire via ls -lh svg_batch/ pour valider l’exécution du processus.
Chaque graphique SVG dispose désormais de son équivalent PNG fidèlement rastérisé.

La légèreté et la vélocité de cairosvg en font une solution de premier choix pour intégrer la manipulation de graphiques vectoriels au sein de vos scripts d’automatisation et chaînes CI/CD sous Linux. Qu’il s’agisse d’extraire rapidement une icône ou de convertir des centaines d’illustrations à la volée, cet outil simplifie considérablement la gestion des images dans le terminal.