Batik 不预览位于文件夹内的 svg 文件
Batik does not preview svg files locating inside a folder
我使用 apache batik 在我的程序中显示一些 svg 文件。下面是一个示例代码,它只在一个框架中显示一个 svg 文件。
public class SVGViewer {
public SVGViewer() {
JFrame frame = new JFrame("SVG Viewer");
frame.setPreferredSize(new Dimension(500, 500));
frame.setVisible(true);
frame.pack();
JSVGCanvas c = new JSVGCanvas();
c.setURI("folder/image.svg");
c.setSize(500,500);
c.setLocation(0, 0);
frame.add(c);
}
public static void main(String[] args) {
new SVGViewer();
}
}
使用下面的svg作为我想看的图片,
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 352" enable-background="new 0 0 512 352" xml:space="preserve">
<filter id="DropShadow">
<feGaussianBlur stdDeviation="3"></feGaussianBlur>
</filter>
<g id="XMLID_1_" filter="url(#DropShadow)">
<path id="XMLID_13_" fill="#231F20" d="M485,349.5H27c-13.5,0-24.5-11-24.5-24.5V27c0-13.5,11-24.5,24.5-24.5h458
c13.5,0,24.5,11,24.5,24.5v298C509.5,338.5,498.5,349.5,485,349.5z"/>
</g>
</svg>
我收到这个错误(没有显示图像)
问题是,当我将图像移到文件夹外时,我可以正常看到它。它可能必须对文件的 DOM 做些什么,但我对此不是很熟悉。有什么想法吗?
如果您像这样输入 svg 文件的绝对路径,上面的代码就可以工作:
String currentPath = System.getProperty("user.dir");
c.setURI("file:/" + currentPath + "/test/image.svg");
我使用 apache batik 在我的程序中显示一些 svg 文件。下面是一个示例代码,它只在一个框架中显示一个 svg 文件。
public class SVGViewer {
public SVGViewer() {
JFrame frame = new JFrame("SVG Viewer");
frame.setPreferredSize(new Dimension(500, 500));
frame.setVisible(true);
frame.pack();
JSVGCanvas c = new JSVGCanvas();
c.setURI("folder/image.svg");
c.setSize(500,500);
c.setLocation(0, 0);
frame.add(c);
}
public static void main(String[] args) {
new SVGViewer();
}
}
使用下面的svg作为我想看的图片,
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 352" enable-background="new 0 0 512 352" xml:space="preserve">
<filter id="DropShadow">
<feGaussianBlur stdDeviation="3"></feGaussianBlur>
</filter>
<g id="XMLID_1_" filter="url(#DropShadow)">
<path id="XMLID_13_" fill="#231F20" d="M485,349.5H27c-13.5,0-24.5-11-24.5-24.5V27c0-13.5,11-24.5,24.5-24.5h458
c13.5,0,24.5,11,24.5,24.5v298C509.5,338.5,498.5,349.5,485,349.5z"/>
</g>
</svg>
我收到这个错误(没有显示图像)
问题是,当我将图像移到文件夹外时,我可以正常看到它。它可能必须对文件的 DOM 做些什么,但我对此不是很熟悉。有什么想法吗?
如果您像这样输入 svg 文件的绝对路径,上面的代码就可以工作:
String currentPath = System.getProperty("user.dir");
c.setURI("file:/" + currentPath + "/test/image.svg");