2017-07-31 120 views
0

我使用apache batik在我的程序中顯示一些svg文件。下面是一個示例代碼,它只是在一個框架中顯示一個svg文件。Batik不會預覽位於文件夾內的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> 

我得到這個錯誤(和沒有圖像顯示)

enter image description here

的事情是,當我將圖像移動到文件夾外時,我通常會看到它。它可能必須對文件的DOM做些事情,但我對此不是很熟悉。有任何想法嗎?

+0

也許對「文件夾」和「文件夾/文件夾」比較權限啓動?你如何將該svg文件上傳到文件夾中?該文件夾是由不同的用戶創建的嗎?或者,也許你在c.setURI(「folder/image.svg」)中有不需要的'文件夾';線?異常中的'文件夾/文件夾'值看起來可疑。 – Dolfa

+0

我創建了該文件夾,並確保設置權限777.沒有第二個文件夾..我不知道爲什麼這個「文件夾/文件夾」在錯誤中。 –

+0

如果你從c.setURI行刪除'folder',它會工作嗎?如果是這樣,你的類或實際上BridgeContext使用錯誤的根目錄。我會仔細檢查你的班級所在的位置,它不應該在'文件夾'內 – Dolfa

回答

0

上面的代碼工作,如果你進入這樣的SVG文件的絕對路徑:

String currentPath = System.getProperty("user.dir"); 
c.setURI("file:/" + currentPath + "/test/image.svg"); 
相關問題