【问题标题】:WPF WebBrowser Control loading local file readonlyWPF WebBrowser 控件以只读方式加载本地文件
【发布时间】:2015-09-20 01:47:57
【问题描述】:

我想使用 WebBrowser 控件来显示几个文件。 但是需要在 WebBrowser 控件显示文件后重命名、删除文件。 问题是,文件被锁定,直到 WebBrowser 设置为显示另一个文件或不显示文件。

有没有办法强制 WebBrowser 缓存文件并在加载后立即释放?


现在我从文件中创建了一个内存流并将其传递给 WebBrowser 控件。

using (var fileStream = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.Read))
{
  fileMemoryStream = new MemoryStream();
  fileStream.CopyTo(fileMemoryStream);
}

fileMemoryStream.Position = 0;
webBrowser.NavigateToStream(fileMemoryStream);

但现在我看不到 pdf 文档,但我看到 pdf 为 ASCII 码。

"%PDF-1.2 %ÈÇÐÄF 4 0 obj > endobj 5 0 obj......."

有没有办法将文件中的程序类型附加到流中以显示 PDF?

【问题讨论】:

  • 我知道这对派对来说有点晚了,但是如果你在内存中创建一个文本文件并基本上构建一个 http 响应的内容,包括标题(内容类型:text/pdf 或无论正确的类型是什么)。然后将 pdf 中的字节嵌入到响应中并将整个内容提供给 Web 浏览器?哎呀,您也许可以只使用 .net 中的 HttpResponse 类来完成所有这些并将其序列化到内存流中。

标签: c# wpf webbrowser-control


【解决方案1】:

WPF 浏览器的工作方式很遗憾,它可能无法从流中显示 PDF,除非您进行一些黑客攻击,例如在应用程序中运行自己的小型 http 服务器并使用该服务器流式传输 pdf。但在您的情况下,将 pdf 复制到临时文件夹并从那里打开要容易得多:

File.Copy("path_to_pdf", Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".pdf");

并从该位置显示它。当然,完成后不要忘记清理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2010-12-10
    相关资源
    最近更新 更多