这就是我想做的事情:
从数据库获取64base字节数组(实际上是pdf格式)。这有效。 然后我想在webbrowser组件中显示pdf。
我首先将pdf保存到file.pdf然后打开它:
byte[] bitjes = isc.GetFileById(fileid); // Getting the bytes
FileStream stream = new FileStream(@"C:\NexusPDF\" + filename, FileMode.CreateNew);
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(bitjes, 0, bitjes.Length);
writer.Close();
webBrowser.Navigate(@"C:\NexusPDF\" + filename);
但这给了我涉及读/写访问的各种问题。所以我想我必须使用memorystream类来解决这个问题。
byte[] bitjes = isc.GetFileById(fileid);
MemoryStream memstream = new MemoryStream(bitjes);
BinaryWriter writer = new BinaryWriter(memstream);
writer.Write(bitjes, 0, bitjes.Length);
writer.Close();
但是这里我被困住了!我不能只在webBrowser组件中显示这个可以吗? 在显示pdf之前,我是否必须使用二进制读取器?
我是以正确的方式解决这个问题,还是有更好的选择?
主要的是我不想将文件保存在磁盘上。
任何帮助将不胜感激。
答案 0 :(得分:0)
您可能能够使用数据网址方案。此URL方案指定内联内容。
webBrowser.Navigate("data:application/pdf;base64," + X);
其中X是基本64字符串。
无需将base 64 PDF字符串转换为字节数组!
有关详细信息,请参阅http://www.ietf.org/rfc/rfc2397.txt。