如何从Base64String反序列化上传的字体?

时间:2015-06-18 16:44:54

标签: c# html5 filereader

我需要从上传的字体中获取字体系列名称。用户上传.ttf文件。当我尝试反序列化数据时,我收到以下错误“输入流不是有效的二进制格式。”使用readAsDataURL()通过HTML5 FileReader上传字体数据。

有人能发现我做错了吗?我怀疑我使用了错误的解串器......但我不确定。

//clean the font data of encoding
var cleanFontData = brandingsFontAddViewModel.FontData.Split(',')[1];
var fontBytes = Convert.FromBase64String(cleanFontData);

using (Stream memStream = new MemoryStream(fontBytes, 0,  fontBytes.Length))
{
    var deserializer = new BinaryFormatter();
    var font = (Font)deserializer.Deserialize(memStream);
}

1 个答案:

答案 0 :(得分:0)

终于找到了答案。

// used to store our font and make it available in our app
                var pfc = new PrivateFontCollection();

                IntPtr data = Marshal.AllocCoTaskMem((int) ms.Length);

                Marshal.Copy(fontBytes, 0, data, (int)ms.Length);

                pfc.AddMemoryFont(data, (int)ms.Length);

                Marshal.FreeCoTaskMem(data);

                var fontWithMime = "data:application/x-font-truetype;charset=utf-8;base64," + cleanFontData;

                fontName = pfc.Families[0].Name;