在 webapplication [w/o 远程服务器中显示本地 pdf]

Show local pdf inside webapplication [w/o remote server]

我正在开发一个 HTML5/.net POC,其中我在 .net (C#) WebBrowser 控件中显示了一个本地 HTML5 webapp。

该页面是在 asp.net MVC 中开发的,下载为单个 .htm 文件(使用 Chrome 的 SingleFile 扩展名)并保存在数据库中(或存储在文件系统中,不会'没关系),加载并显示在 .net 网络浏览器控件中。

[几乎]一切正常:页面呈现正确,我可以从 C# 等调用 js 函数。

但现在我必须在页面内显示一些内联的 pdf。 pdf 不是从远程服务器提供的(根本没有服务器),而是从文件系统(例如临时文件)加载。我的想法是在 html5 应用程序中制作一个像 showPdf(path, pageNum) 这样的 js 函数,并从 .net.

调用它

问题是它看起来没有办法(至少我找不到)加载本地 pdf,都使用 Mozilla 的 pdf.js 或 html 标签,我得到 "Not allowed to load local resource" 在 Chrome 控制台/"Access denied" IE 警报中。

是否有某种组件可以try/option我可以设置为允许浏览器加载本地 pdf?

WebBrowser 组件使用 IE 来呈现页面,所以也许我可以更改某种 IE option/key 注册表(最终将使用此 webapp 的机器是已知的,我们可以根据需要配置它们) .

您可以尝试使用传统的锚元素 (<a href="file:...">),然后为您的应用启用 File Protocol Navigation 功能控制。 (而且,虽然这看起来很明显,但可能值得确认 IE 功能控件不会在其他浏览器中启用功能。)

我不知道这行得通,但考虑到这个问题,这似乎是一个可能的解决方案。

请注意,访问文件对象可能会被其他策略或安全措施禁用访问本地文件系统对象的权限。可能需要更多 info/research。

希望这对您有所帮助...

-- 兰斯

忘记写下我是怎么解决的了: 好吧,它是一个在 WinForm WebBrowser 控件中显示的 webapp,所以我使用 this article 从 JS 调用 C# 方法。 C# 方法使用默认 OS pdf reader 来显示表单内的 pdf。