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.