2012-08-28 7 views
1

바빌에서 PNGEncoder 클래스를 사용하여 svg 파일을 png 형식으로 변환하려고합니다. 제 코드는 아파치 사이트에있는 예제에서 나온 것입니다. 사용할 때 내가자바 스크립트가 PNGEncoder와 함께 실행되지 않습니다

ava.lang.Exception: Unknown language: text/ecmascript 
    at org.apache.batik.bridge.BridgeContext.getInterpreter(BridgeContext.java:575) 
    at org.apache.batik.bridge.BaseScriptingEnvironment.getInterpreter(BaseScriptingEnvironment.java:289) 
    at org.apache.batik.bridge.BaseScriptingEnvironment.loadScripts(BaseScriptingEnvironment.java:404) 
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:214) 
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92) 
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142) 
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156) 
    at com.amered.xfltojs.app.FrameToSvg.writePng(FrameToSvg.java:156) 
    at com.amered.xfltojs.app.DocData.generateImageData(DocData.java:172) 

파일이 제대로 표시 예외를 얻을 내 writePng 기능을 실행하려고 할 때마다

public void writePng(String pngPath) throws Exception{ 
     String parentPath=FileUtils.getParentPath(pngPath); 
     FileUtils.mkdirs(parentPath); 
    PNGTranscoder t = new PNGTranscoder(); 
    t.addTranscodingHint(PNGTranscoder.KEY_EXECUTE_ONLOAD,new Boolean(true)); 

    FileInputStream iStream=new FileInputStream(svgPath); 
    TranscoderInput input = new TranscoderInput(iStream); 

    OutputStream ostream = new FileOutputStream(pngPath); 
    TranscoderOutput output = new TranscoderOutput(ostream); 

    t.transcode(input, output); 

    ostream.flush(); 
    ostream.close();   
    } 

임베디드 자바 스크립트로 입력 SVG의 조각은 아래

<?xml version="1.0" encoding="UTF-8"?> 
<svg contentScriptType="text/ecmascript" height="600" version="1.2" width="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <defs/> 
    <script type="text/ecmascript" xlink:href="file:/D:/dev/svn/deathstar/xfltoalsxml/src/js/helper_functions.js"/> 
    <script type="text/ecmascript" xlink:href="file:/D:/dev/svn/deathstar/xfltoalsxml/src/js/textFlow.js"/> 
      <text id="defid_text_1" transform="matrix(1 0 0 1 269.9 57)"/> 
      <script type="text/ecmascript"><![CDATA[var textNode = document.getElementById('defid_text_1'); 
textNode.setAttributeNS(null,'x',0); 
textNode.setAttributeNS(null,'y',0); 
textNode.setAttributeNS(null,'font-size',18); 
textNode.setAttributeNS(null,'font-family','ArialMT'); 
document.documentElement.appendChild(textNode); 
textFlow('testdata abcd ',textNode,514.1,0,20,false); 
]]></script> 
</svg> 

입니다 삐걱 거리다.

내가 생각할 수있는 모든 곳을 확인하고 왜 이런 일이 발생하는지 설명을 찾을 수 없습니다. 바라건대 누군가 제안 할 수 있기를 바랍니다.

답변

0

나는 같은 예외를 겪고있었습니다.

대신

TranscoderInput input = new TranscoderInput(new FileReader("myfile.svg")); 

의 나는

String file = new File("myfile.svg").toURI().toString(); 
TranscoderInput input = new TranscoderInput(file); 
를 사용 : 어떤 이유로,이 날 위해 일했습니다
관련 문제