如何使用iText7将SVG添加到PDF

我需要将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);

我在以下页面中发现了这一点:

PdfPTable和PdfTemplate

有一种创建类似于Template的方法:

PdfFormXObject svgTempl = new PdfFormXObject(new Rectangle(svgWidth, svgHeight));

如何创建Graphics2D?

回答:

巧合的是,我们今天发布了SVG实现。我们目前尚不支持全部功能集,我们仍将在第二季度及以后的时间里进行开发,但是您已经可以使用它了。该工件在Maven上。该存储库位于Github上。该文档位于我们的公共Wiki上。

代码示例将放在网站上,但这是一个非常简单的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();

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

以上是 如何使用iText7将SVG添加到PDF 的全部内容, 来源链接: utcz.com/qa/421870.html

回到顶部