如何使用iText7将SVG添加到PDF

Ap *_*Tsi 2 java svg itext7

我需要将SVG图形添加​​到PDF文件中.

是否可以使用iText7?

使用iText5:

BufferedReader in = new BufferedReader(new InputStreamReader(svgUrl.openStream()));
String xmlParser = XMLResourceDescriptor.getXMLParserClassName();

SVGDocument svgDoc = new SAXSVGDocumentFactory(xmlParser).createSVGDocument(null, in);
in.close();


// Try to read embedded height and width
float svgWidth = Float.parseFloat(svgDoc.getDocumentElement().getAttribute("width").replaceAll("[^0-9.,]",""));
float svgHeight = Float.parseFloat(svgDoc.getDocumentElement().getAttribute("height").replaceAll("[^0-9.,]",""));

PdfTemplate svgTempl = PdfTemplate.createTemplate(writer, svgWidth, svgHeight);
Graphics2D g2d = svgTempl.createGraphics(svgWidth,svgHeight);          

GraphicsNode chartGfx = (new GVTBuilder()).build(new BridgeContext(new UserAgentAdapter()), svgDoc);
chartGfx.paint(g2d);
g2d.dispose();

Image img = new ImgTemplate(svgTempl);
Run Code Online (Sandbox Code Playgroud)

我发现在下面的页面中: PdfPTable和PdfTemplate

有一种方法可以创建类似于Template的东西:

PdfFormXObject svgTempl = new PdfFormXObject(new Rectangle(svgWidth, svgHeight));
Run Code Online (Sandbox Code Playgroud)

我该如何创建Graphics2D?

Mic*_*mey 5

巧合的是,我们今天发布了我们的SVG实现.我们还不支持完整的功能集,我们仍然在第二季度及以后的工作,但你已经可以使用它了.神器在Maven上.存储库位于Github上.文档在我们的公共维基上.

代码示例将放在网站上,但它是一个非常简单的API,类似于pdfHtml的工作方式.有一个SvgConverter实用程序类,它提供了多种转换为PDF或PDF XObjects的方法.

PdfDocument doc = new PdfDocument(
  new PdfWriter(pdfOutputStream, 
    new WriterProperties().setCompressionLevel(0)));
doc.addNewPage();
SvgConverter.drawOnDocument(svg, doc, 1);
doc.close();
Run Code Online (Sandbox Code Playgroud)

资料来源:我是一名从事SVG实施的iText开发人员

  • @ApostolosTsigkaridas您的svg文件可以使用svg的开发版本进行转换.如上所述,这个7.1.2版本尚未完成,我们仍在努力实施.您可以选择从源代码构建7.1.3-SNAPSHOT,或者在不久的将来通过我们的工件下载它(仍在设置中)https://repo.itextsupport.com/webapp/#/artifacts/browse/simple/General /快照/ COM/itextpdf (2认同)