2013-06-24 1 views
0

에서 base64로 인코딩 된 글꼴 문자열에서 글꼴 파일을 만드는 방법에내가 base64로 인코딩 한 글꼴 문자열을 자바

String font_data="font/truetype;charset=utf-8;base64,AAEAAAAMAIAAAwBAT1MvMmaobcEAAAFIAAAAVmNtYXCo5nJcAAACgAAAAVJnYXNw//8AAwAAKHQAAAAIZ2x5Zt1rdPEAAARIAAAULGhlYWTx2l1e ........... AFwAXQAAAAAAAf//AAI="; 

지금은 java를 사용하여 .ttf 글꼴 파일을 만들;

어떻게 하시겠습니까? 사전에

감사합니다 ..

+0

[ByteArrayInputStream] (ht) 클래스를 사용하여 먼저 파일을 만들지 않고 글꼴을로드 할 수도 있습니다. tps : //docs.oracle.com/javase/7/docs/api/java/io/ByteArrayInputStream.html). –

답변

2

는 그냥 64 기수 부분을 디코딩하고 파일 (나는 그 부분이 정말 트루 타입 글꼴입니다 있으리라 믿고있어)에 저장합니다. 당신이 자바 7을 사용하는 경우

: 당신은 자바 6을 사용하는 경우

String fontData = "font/truetype;charset=utf-8;base64,QUJDREU= ... "; 

fontData = fontData.substring(fontData.indexOf("base64,") + 7); 

File ttFile = new File("/path/to/your/file.ttf"); 
try (FileOutputStream output = new FileOutputStream(ttFile)) { 
    byte[] binary = javax.xml.bind.DatatypeConverter.parseBase64Binary(fontData); 
    output.write(binary); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

:

String fontData = "font/truetype;charset=utf-8;base64,QUJDREU= ... "; 

fontData = fontData.substring(fontData.indexOf("base64,") + 7); 

File ttFile = new File("/path/to/your/file.ttf"); 
try { 
    FileOutputStream output = null; 
    try { 
     output = new FileOutputStream(ttFile); 
     byte[] binary = javax.xml.bind.DatatypeConverter.parseBase64Binary(fontData); 
     output.write(binary); 
    } finally { 
     if(output != null) { 
      output.close(); 
     } 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

당신이 이전 버전의 다운로드를 사용하여 클래스 경로 Apache Commons Codec에 추가하는 경우

String fontData = "font/truetype;charset=utf-8;base64,QUJDREU= ... "; 

fontData = fontData.substring(fontData.indexOf("base64,") + 7); 

File ttFile = new File("/path/to/your/file.ttf"); 
FileOutputStream output = null; 
try { 
    try { 
     output = new FileOutputStream(ttFile); 
     byte[] binary = new org.apache.commons.codec.binary.Base64().decode(fontData); 
     output.write(binary); 
    } finally { 
     if(output != null) { 
      output.close(); 
     } 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
}