56 votes

Quelles sont les options pour optimiser le SVG ?

J'ai plusieurs SVG, dont certains sont assez volumineux (11 Mo), et ils ont été créés à partir d'un PDF à l'aide de l'application suivante pdf2svg .

Le problème est que le SVG est trop gros, prend beaucoup de temps à s'ouvrir et est inutilement complexe. Il contient principalement du texte et quelques images (pensez à un journal), et le texte est divisé en petits morceaux de caractères, même pas des mots.

J'ai besoin de l'optimiser, d'abord pour réduire la taille, et aussi pour réduire le nombre d'éléments afin qu'il se charge plus rapidement. La seule chose à laquelle j'ai pensé jusqu'à présent est de regarder les caractères qui se trouvent sur une ligne, et de les joindre en un seul <tspan> .

Cela devrait réduire la quantité d'éléments de texte de manière assez significative, car il semble qu'il s'agisse principalement de groupes de 1 à 5 lettres.

Mais je cherche d'autres choses que je peux faire au SVG pour réduire la taille. Il y a aussi une police principale, qui est utilisée pour environ 95% du texte, mais tel qu'il est actuellement, tout le texte est défini comme des glyphes (formes rendues).

Est-il possible d'intégrer simplement la police, de sorte que le texte soit rendu en tant que texte, et non en tant que forme ?

De même, si vous connaissez une meilleure bibliothèque pour convertir des PDF en SVG, j'apprécierais toute contribution. La seule exigence est que la sortie SVG ait exactement le même aspect que le PDF.

Je tiens également à souligner que la vitesse n'est pas vraiment importante. Peu importe le temps que prend la conversion, tant qu'elle produit le résultat souhaité.

1voto

Daniel De León Points 2842

Vous pouvez peut-être utiliser un service Web gratuit pour cela.

Essayez ce site : https://online-converting.com/svg-optimizer/

0voto

jozxyqk Points 2691

Utilisation de la bibliothèque python feedparser qui comprend Nettoyage des SVG J'ai écrit cette fonction qui, de manière ennuyeuse, enveloppe le svg dans un seul élément RSS afin de l'analyser.

import feedparser
def sanitize_svg(svg):
    feed = """<?xml version="1.0" encoding="UTF-8" ?><rss><channel><item><description>""" + svg + """</description></item></channel></rss>"""
    parsed = feedparser.parse(feed)
    return parsed.entries[0].description.encode('utf-8')

Bien qu'il ait été conçu pour établir une liste blanche d'éléments dans un souci de sécurité, il réduit également la taille des svg de manière significative.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X