Java通过batik读取解析SVG,并通过SVGGraphics2D实现添加SVG的内容,最后将SVG保存为文件。
PS:网上的各种方法真的像依托答辩,抄来抄去没一个写到点子上的,最终还是看文档实现了。
- 添加依赖的pom
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-all</artifactId>
<version>1.16</version>
</dependency>
- 实现读取svg并写入一行文字,生成新的svg文件并保存
File inputFile = new File("D:\\input.svg");
File outFile = new File("D:\\output.svg");
String parser= XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
String uri = inputFile.toURI().toString();
SVGDocument svgDocument = f.createSVGDocument(uri);
SVGSVGElement root = svgDocument.getRootElement();
SVGGraphics2D g = new SVGGraphics2D(svgDocument);
Font font = new Font("微软雅黑", Font.BOLD , 24);
g.setFont(font);
g.setColor(Color.decode("#000000"));
g.drawString("测试内容", 100, 100);
g.dispose();
root.appendChild(g.getRoot());
TranscoderInput input = new TranscoderInput(svgDocument);
SVGTranscoder t = new SVGTranscoder();
try (OutputStream os = new FileOutputStream(outFile)) {
OutputStreamWriter writer = new OutputStreamWriter(os, StandardCharsets.UTF_8);
TranscoderOutput output = new TranscoderOutput(writer);
t.transcode(input, output);
}
发表评论
抢沙发~