如何使用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