Quiero convertir PDF a SVG por favor sugiera algunas bibliotecas/ejecutables que podrán hacer esto de manera eficiente. He escrito mi propio programa Java utilizando las bibliotecas Apache PDFBox y Batik -convertir pdf a svg
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);
}
Esta solución funciona muy bien, pero el tamaño de los archivos SVG que resultan en grandes (muchas veces mayor que el PDF).. He descubierto dónde está el problema mirando el svg en un editor de texto. incluye todos los caracteres del documento original en su propio bloque, incluso si las propiedades de fuente de los caracteres son las mismas. Por ejemplo, la palabra hola aparecerá como 6 bloques de texto diferentes. ¿Hay alguna forma de corregir el código anterior? o sugiera otra solución que funcione de manera más eficiente.
gracias ese comando inkscape parece funcionar sin embargo, sólo convierte la primera página, do u conocer de una opción de línea de comando que producirá 1 svg para cada página? – user434541
No conozco una forma de hacerlo, y la página man de inkscape no parece indicar que esta funcionalidad esté expuesta en la interfaz de línea de comandos. Supongo que sus opciones serían agregar esta interfaz modificando el código de Inkscape. O bien, podría hacer algo muy hacky y creativo, y utilizar un programa como ghostscript para dividir el PDF en múltiples documentos de una sola página, y luego alimentar cada página individualmente a Inkscape. – jbeard4
Probablemente la mejor solución es dividir el archivo pdf en un archivo por página. Tanto pdfjam como pdftk pueden hacer esto. – hlovdal