Batik 在 SVGGraphics2D 中加载 SVG 文件
Batik load SVG file in SVGGraphics2D
我用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。
对我来说暂时还可以。
并且我尝试添加另一个像矩形一样的想法并且可以工作。
我用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。 对我来说暂时还可以。
并且我尝试添加另一个像矩形一样的想法并且可以工作。