57 votes

convertir pdf en svg

Je souhaite convertir un PDF en SVG, merci de me suggérer des librairies/exécutables qui pourront le faire efficacement. J'ai écrit mon propre programme java en utilisant les bibliothèques apache PDFBox et Batik -

PDDocument document = PDDocument.load( pdfFile );
DOMImplementation domImpl =
    GenericDOMImplementation.getDOMImplementation();

// Create an instance of org.w3c.dom.Document.
String svgNS = "http://www.w3.org/2000/svg";
Document svgDocument = domImpl.createDocument(svgNS, "svg", null);
SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(svgDocument);
ctx.setEmbeddedFontsOn(true);

// Ask the test to render into the SVG Graphics2D implementation.

    for(int i = 0 ; i < document.getNumberOfPages() ; i++){
        String svgFName = svgDir+"page"+i+".svg";
        (new File(svgFName)).createNewFile();
        // Create an instance of the SVG Generator.
        SVGGraphics2D svgGenerator = new SVGGraphics2D(ctx,false);
        Printable page  = document.getPrintable(i);
        page.print(svgGenerator, document.getPageFormat(i), i);
        svgGenerator.stream(svgFName);
    }

Cette solution fonctionne très bien mais la taille des fichiers svg résultants est énorme (plusieurs fois supérieure à celle du pdf). J'ai trouvé le problème en regardant le svg dans un éditeur de texte. Il enferme chaque caractère du document original dans son propre bloc même si les propriétés de la police des caractères sont les mêmes. Par exemple, le mot hello apparaîtra sous la forme de 6 blocs de texte différents. Est-ce qu'il y a un moyen de corriger le code ci-dessus ? ou s'il vous plaît, suggérez une autre solution qui fonctionnera plus efficacement.

0voto

Daniel T Points 504

Inkscape ne fonctionne pas avec le -l n'est plus possible. Le message suivant s'affiche : "Impossible d'ouvrir le fichier : /out.svg (n'existe pas)". La version longue de cette option se trouve dans la page de manuel sous la forme suivante --export-plain-svg et fonctionne mais affiche un avertissement de dépréciation. J'ai pu corriger et mettre à jour la commande en utilisant la commande -o sur Inkscape 1.1.2-3ubuntu4 :

inkscape in.pdf -o out.svg

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