作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 batik 绘制 svg,并保存它。那个工作。
但现在我尝试加载我的 svg 文件并添加一些东西。
我使用这个函数加载我的 svg 文件
private static SVGDocument loadSVGDocument(String uri) {
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
SVGDocument svgDocument = null;
try {
//svgDocument = factory.createSVGDocument(IMAGE_SVG);
svgDocument = factory.createSVGDocument(uri);
} catch (IOException e) {
System.out.println(e.getMessage());
}
return svgDocument;
}
这有 SVGGraphics2D
SVGDocument svgDocument = loadSVGDocument(TEST_SVG);
SVGGraphics2D g = new SVGGraphics2D(svgDocument);
当我调试我的 SVGDocument 时,所有子项和属性都为 null当我生成图像时,它是空的,大小是 400x400
加载 SVG 文件时哪里有问题?
最佳答案
我每个人我为我的案例找到了解决方案
我比较我这一代和我的文件。首先认为我只有 svg root 和一个 child g。svg root 没有 with 和 height
我去搜索宽度和高度
Element elSVG = svgDocument.getRootElement();
String width = elSVG.getAttribute("width");
String height = elSVG.getAttribute("height");
和root之后
NodeList nodes = elSVG.getElementsByTagName("g");
Node node = nodes.item(0);
Element el = null;
if(Node.ELEMENT_NODE == node.getNodeType()) {
el = (Element)node;
}
最后将所有内容添加到图形
SVGGraphics2D g = new SVGGraphics2D(svgDocument);
g.setTopLevelGroup(el);
g.setSVGCanvasSize(new Dimension(Integer.parseInt(width), Integer.parseInt(height)));
而且这只适用于一个 child 的 svg。现在对我来说还可以。
然后我尝试添加另一个像矩形一样的想法,并且可以工作。
关于java - Batik 在 SVGGraphics2D 中加载 SVG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51455415/
我是一名优秀的程序员,十分优秀!