I want to convert PDF to SVG, please suggest some libraries / executables that can do this efficiently. I wrote my own java program using the apache PDFBox and Batik libraries -
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); }
This solution works fine, but the size of the resulting svg files is huge (many times larger than in pdf format). I found out where the problem is while looking at svg in a text editor. it covers each character in the source document in its own block, even if the font properties of the characters are the same. For example, the word hello will appear as 6 different text blocks. Is there a way to fix the above code? or suggest another solution that will work more efficiently.
pdf svg pdfbox batik
user434541 Nov 08 2018-10-10T00: 00-11
source share