0

这就是我想做的:

从数据库中获取一个 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 组件中显示这个,可以吗?我必须使用 binaryreader 才能显示 pdf 吗?

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

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

任何帮助将不胜感激。

4

1 回答 1

0

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

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

其中 X 是 base 64 字符串。

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

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

于 2012-11-08T08:55:40.050 回答