2

我正在使用 Winforms webbrowser 控件来显示存储在我的 SQL DB 表中的 HTML 内容。但是,我的一些内容是 PDF,我打算将它们作为二进制数据存储在 SQL DB 中并提供给 Webbrowser 控件。我希望避免将二进制内容存储在客户端计算机上的临时文件中的麻烦,然后创建 html 容器代码来引用这个临时 PDF 文件。有没有办法可以将 PDF 二进制内容直接嵌入到 html 中,并直接在 webbrowser 控件上显示这个 html?

我发现这些以前的线程指的是 COM 'hack'。有没有更简单、更简单的方法?谢谢! 如何让 C# WebBrowser 控件显示 jpeg 文件(原始)?

谢谢,单球

4

1 回答 1

2

我不会说实现异步可插拔协议是一种黑客行为。这是 Windows 上实现 IE 将能够使用的新协议的标准方法。不过,协议处理程序的注册确实需要繁琐的设置。

但最简单/最简单的方法是实际使用一个临时文件,然后简单地从您的 html 链接到它。如果您注意使用相关的 .NET 函数来确保您的代码不会对文件夹/文件路径等做出假设,这并不是一件麻烦事。

  1. 使用GetTempPath()获取临时文件夹。
  2. 使用Guid.NewGuid()在临时文件夹中创建一个具有唯一名称的 pdf 文件
  3. 将二进制 PDF 数据写入文件。
  4. 更新 html 元素的 href 或 src 属性以指向临时文件的完整路径。
  5. 将 html 加载到 WebBrowser 控件中。
  6. 不再需要时删除临时 pdf 文件。

另一种可能的方法是对您的二进制数据进行 Base64 编码并将其存储在 DIV/Input 元素中。接下来将 ActiveX 控件或其他一些客户端浏览器组件添加到您的 html 页面,该组件知道如何查找 Base64 数据并将其转换回二进制流(并显示为 PDF)。但是,我不知道执行此操作的 3d 派对控件。

于 2010-04-13T04:24:31.510 回答