2010-04-12 95 views
2

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

我发现这些前面的线索指的是COM'hack'。有一个更简单,更简单的方法吗?谢谢! How do I get a C# WebBrowser control to show jpeg files (raw)?

感谢, 单珠

+0

什么是IE插件的PDF插件?它可以从url /文件系统以外的地方读取吗? IE/WebBrowser不支持PDF。 – 2010-04-13 20:44:43

回答

2

我不会说实现一个asynchronus可插拔协议是一个黑客。这是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控件或其他客户端的broswer组件添加到您的html页面,该页面知道如何查找Base64数据并将其转换回二进制流(并显示为PDF)。然而,我并不知道有这样做的3D方控制。

+0

感谢您的步骤。我认为这是要走的路。我会保持这个线程开放,看看是否有其他解决方案。谢谢! – user274816 2010-04-13 22:27:05