将base64字节数组转换为PDF并显示在Web浏览器组件中

时间:2012-11-08 08:40:37

标签: c#

这就是我想做的事情:

从数据库获取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之前,我是否必须使用二进制读取器?

我是以正确的方式解决这个问题,还是有更好的选择?

主要的是我不想将文件保存在磁盘上。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

可能能够使用数据网址方案。此URL方案指定内联内容。

webBrowser.Navigate("data:application/pdf;base64," + X);

其中X是基本64字符串。

无需将base 64 PDF字符串转换为字节数组!

有关详细信息,请参阅http://www.ietf.org/rfc/rfc2397.txt