Я хочу конвертировать PDF в SVG, пожалуйста, предложите некоторые библиотеки/исполняемые файлы, которые смогут сделать это эффективно. Я написал свою собственную программу Java с использованием библиотеки Apache PDFBox и Батик -конвертировать pdf в 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);
}
Это решение отлично работает, но размер получаемых файлов ГСВ в огромный (во много раз больше, чем в формате PDF).. Я выяснил, где проблема, глядя на svg в текстовом редакторе. он охватывает каждый символ в исходном документе в своем собственном блоке, даже если свойства шрифта символов одинаковы. Например, слово hello будет отображаться как 6 различных текстовых блоков. Есть ли способ исправить вышеуказанный код? или предложите другое решение, которое будет работать более эффективно.
спасибо, что команда Inkscape, кажется, работает, однако она преобразует только первую страницу, делать и не знает параметр командной строки, который будет генерировать 1 svg для каждой страницы? – user434541
Я не знаю, как это сделать, а страница inkscape man, похоже, не указывает, что эта функция отображается в интерфейсе командной строки. Я полагаю, что ваши варианты будут заключаться в том, чтобы добавить этот интерфейс самостоятельно, изменив код inkscape. Или вы можете сделать что-то очень взломанное и креативное, и использовать такую программу, как ghostscript, чтобы разделить PDF на несколько одностраничных документов, а затем поместить каждую страницу по отдельности в inkscape. – jbeard4
Возможно, лучшим решением будет разбиение файла PDF на один файл на страницу. И pdfjam, и pdftk могут это сделать. – hlovdal