PDF转换为SVGPDF转换为SVG(convert pdf to svg)

2019-05-13 08:42发布

我想将PDF转换为SVG请建议一些库/可执行文件,将能够有效地做到这一点。 我已经写了使用Apache PDFBox的和蜡染库自己的Java程序 -

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);
    }

该解决方案的伟大工程,但在巨大的产生SVG文件的大小(除PDF大许多倍)。 我已经找到了问题的所在通过查看文本编辑器中的SVG。 它封闭在自己的块中的原始文档中的每个字符,即使字符的字体属性是一样的。 例如单词Hello将显示为6个不同的文本块。 有没有办法解决上面的代码? 或请提出另一个解决方案,更有效地工作。

Answer 1:

Inkscape中也可以使用PDF转换为SVG。 它实际上是在这个非常好,虽然它生成的代码是有点臃肿,起码,它似乎不具备,你在程序中遇到的具体问题。 我认为这将是具有挑战性的直接集成到Java,但Inkscape中提供了一个方便的命令行界面这一功能,因此可能访问这将是通过系统调用最简单的方法。

要使用Inkscape中的命令行界面的PDF转换为SVG,使用方法:

inkscape -l out.svg in.pdf

然后你可以或许用打电话:

Runtime.getRuntime().exec("inkscape -l out.svg in.pdf")

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Runtime.html#exec%28java.lang.String%29

我认为EXEC()是同步的,并且仅返回过程完成后(虽然我不是100%肯定上),所以你shoudl能够在那之后刚刚看了“out.svg”。 在任何情况下,谷歌搜索“Java系统调用”将产生如何正确做部分的详细信息。



Answer 2:

看看pdf2svg :

要使用

pdf2svg <input.pdf> <output.svg> [<pdf page no. or "all" >]

当使用all得到具有文件名%d在它(这将是由页编号被替换)。

pdf2svg input.pdf output_page%d.svg all

而对于一些故障排除见: http://www.calcmaster.net/personal_projects/pdf2svg/



Answer 3:

pdftk 82page.pdf burst
sh to-svg.sh 

内容to-svg.sh

#!/bin/bash
FILES=burst/*
for f in $FILES
do
  inkscape -l "$f.svg" "$f"
done


文章来源: convert pdf to svg