6
votes

RSVG ne rend pas d'images liées

J'utilise les liaisons Python RSVG pour rendre une image SVG au Caire et enregistrer dans le fichier, qui fonctionne principalement. Mais si le fichier SVG contient une image liée, comme: xxx

L'image ne figure pas dans le fichier final (le reste du SVG rend tout simplement bien). Le chemin relatif est correct sur la base de l'exécution du script, mais je suppose qu'il y a un problème avec le fait qu'il s'agirait normalement d'une URL relative, et non d'un fichier de fichier relatif. Comment puis-je contourner cela?


1 commentaires

J'ai le même problème. Mettre une URL invalide HREF (lien vers un fichier n'existe pas) révèle que RSVG ne sortira pas une erreur s'il ne trouve pas le fichier.


4 Réponses :


3
votes

La réponse était de traiter les liens pour commencer par fichier: /// et être un chemin absolu complet.


2 commentaires

N'a pas aidé pour moi :(. Cela fonctionne sur une autre machine avec la même version de Librsvg. Pas sur cette machine Archlinux, cependant. Même compilé RSVG-Convertir moi-même.


Même problème (en utilisant OSX 10.9)



3
votes

Il semble que, si le fichier dont vous y comprendez n'est pas sur le même chemin ou sous le chemin du fichier SVG que vous souhaitez convertir, il ne le trouvera pas. Je considère cela comme un bogue.


1 commentaires

Une «fonctionnalité de sécurité», je suppose. J'ai regardé la source et il n'y a aucun moyen de le désactiver à court de recompiler. Juste une note que cela a fonctionné sur Ubuntu 10.04, mais sur 12.04, cette "fonctionnalité" a été ajoutée.



17
votes

Il existe de nombreux facteurs qui doivent être satisfaits pour Librsvg pour permettre la chargement d'une ressource d'image. À partir de V2.40, celles-ci incluent:

  • L'image doit avoir un xlink: href attribut
  • Cet attribut doit contenir un URI complet et valide
  • Le schéma peut être data: // ou fichier: //
  • Fichier: // Les chemins doivent être absolus
  • Fichier: // Les chemins doivent être dans ou en dessous du chemin du fichier source SVG (après que tous les symboles ont été déréférencés)

    Notez que si l'entrée est transmise à rsvg-convert via STDIN, aucun tracé ne compte comme sous-répertoires du fichier d'entrée et de tous les fichiers : // Les images seront refusées. xxx

    Le code régissant la résolution de l'URL d'image peut être trouvé dans le libresvg source dans rsvg-base.c , fonction _rsvg_handle_allow_load .

    Pour ajouter une notification de débogage à RSVG -converti lorsque le chargement de l'image échoue, on peut ajouter xxx

    à config.h dans la source et recompiler.


1 commentaires

Pour mettre à jour cela, les règles sont désormais définies dans le fichier autorisé_url.rs, disponible ici: gitlab.gnome.org/gnome/librsvg/blob/master/rsvg_internals/sr c / ...



3
votes

Je voulais obtenir le rendu des images de Librsvg travaillant sur mon Mac pour accélérer le rendu SVG. La grande réponse de Ian MacKinnon a tous les ingrédients, mais la mise en œuvre d'une modification de la bibliothèque est délicate. Ces étapes ont fait des images de Librsevg de manière correcte avec des chemins relatifs. J'espère que cela sauver quelqu'un un peu de temps.

Premier, j'ai installé Librsvg à l'aide de: p> xxx pré>

au moment de la rédaction, cela installe la version 2.40.13 et les bibliothèques nécessaires à construit le. J'ai ensuite téléchargé et extrait l'archive source dans mon répertoire d'origine: p> xxx pré>

J'ai édité le _rsvg_handle_allow_load code> fonction dans rsvg-base.c Dans ce répertoire pour contourner le chemin de chargement des restrictions en ajoutant ce code autour de la ligne 2275: P>

convert test.svg test.png


0 commentaires