WPF WebBrowser 控件以只读方式加载本地文件

WPF WebBrowser Control loading local file readonly

我想使用 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 << /Type /Outlines /Count 0 >> endobj 5 0 obj ......"

有什么方法可以将文件中的程序类型附加到流中以显示 PDF 吗?

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

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

并从那个位置显示它。当然,用完了别忘了清理哦