Voglio convertire PDF in SVG per favore suggerire alcune librerie/eseguibili che saranno in grado di farlo in modo efficiente. Ho scritto il mio programma Java utilizzando le librerie Apache PDFBox e Batik -convertire pdf in formato 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);
}
Questa soluzione funziona grande, ma la dimensione dei file risultanti SVG in enorme (molte volte superiore alla pdf).. Ho capito dove si trova il problema guardando lo svg in un editor di testo. racchiude ogni carattere nel documento originale nel suo blocco anche se le proprietà dei caratteri dei caratteri sono le stesse. Ad esempio la parola ciao apparirà come 6 diversi blocchi di testo. C'è un modo per correggere il codice sopra? oppure, per favore, suggerire un'altra soluzione che funzioni in modo più efficiente.
grazie che il comando Inkscape sembra funzionare ma converte solo la prima pagina, do u know di un'opzione della riga di comando che produrrà 1 svg per ogni pagina? – user434541
Non conosco un modo per farlo, e la pagina man di inkscape non sembra indicare che questa funzionalità è esposta nell'interfaccia della riga di comando. Suppongo che le tue opzioni siano di aggiungere questa interfaccia tu stesso modificando il codice inkscape. Oppure, si potrebbe fare qualcosa di molto hacky e creativo, e usare un programma come ghostscript per dividere il PDF in più documenti a pagina singola, e quindi alimentare ciascuna pagina individualmente in inkscape. – jbeard4
Probabilmente la soluzione migliore è quella di dividere il file pdf in un file per pagina. Sia pdfjam che pdftk possono farlo. – hlovdal