Reputation: 4137
I have a base64 encoded font String
String font_data="font/truetype;charset=utf-8;base64,AAEAAAAMAIAAAwBAT1MvMmaobcEAAAFIAAAAVmNtYXCo5nJcAAACgAAAAVJnYXNw//8AAwAAKHQAAAAIZ2x5Zt1rdPEAAARIAAAULGhlYWTx2l1e ........... AFwAXQAAAAAAAf//AAI=";
Now I want to create a .ttf
font file using java
;
How to do this?
Thanks in advance..
Upvotes: 1
Views: 1380
Reputation: 17422
Just decode the base64 part and save it in a file (I'm assuming that part is really a True Type font).
If you're using Java 7:
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();
}
If you're using Java 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 = 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();
}
If you're using an older version, download and add to your classpath Apache Commons Codec, and try this:
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();
}
Upvotes: 3