我需要将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?
巧合的是,我们今天发布了我们的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开发人员