C# 将64base字节数组转换为PDF格式,并在webBroswer组件中显示

C# 将64base字节数组转换为PDF格式,并在webBroswer组件中显示,c#,C#,这就是我想做的: 从数据库中获取一个64base字节数组(实际上是pdf格式)。这很有效。 然后我想在webbrowser组件中显示pdf 我首先将pdf保存到file.pdf,然后打开它: byte[] bitjes = isc.GetFileById(fileid); // Getting the bytes FileStream stream = new FileStream(@"C:\NexusPDF\" + filename, FileMode.Cre

这就是我想做的:

从数据库中获取一个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之前,我必须使用binaryreader吗

我是以正确的方式处理这个问题,还是有更好的选择

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


任何帮助都将不胜感激。

您可以使用数据URL方案。此URL方案指定内联内容

webBrowser.Navigate("data:application/pdf;base64," + X);
其中X是基64字符串

无需将基本64 PDF字符串转换为字节数组


有关详细信息,请参阅。

什么样的读/写访问问题?如果其他人打开了相同的文件,我将无法删除它。如果多次搜索同一文件。我可以解决这些问题,但我不想一开始就在磁盘上创建文件。请为每个请求使用唯一名称(guid)保存它。谢谢@Giedrius,但我不想将文件存储在磁盘上。这将是一个非常好的解决方案,从未想过!但是我的字符串太大了,无法使用它。这里引用了您提供的链接:“可以用于HTML文档中的小型内联图像。(嵌入的图像可能接近实用程序的极限。对于其他更大的内容,数据URL可能不合适。)”我的文件可能是1mb左右。