0

我的 chrome 打包应用程序包含一个 PDF,我想让用户查看它。如果我在当前帧中打开它,我会收到错误“不允许使用 Chrome PDF 查看器”。

坦率地说,chrome PDF 查看器非常糟糕,所以我宁愿让用户在他们选择的 PDF 查看器中查看它。如果我禁用 chrome PDF 插件(仅作为实验)并尝试使用 chrome.app.window.open 打开 PDF,它会“下载”PDF,然后用户可以打开它。但这有两个问题:

  1. 我实际上无法让用户转到 chrome://plugins 并禁用它
  2. 没有任何浏览器窗口,因此用户不知道下载发生了

有什么建议么?打开嵌入在我的应用程序中的 PDF 是此应用程序的必备功能。

4

2 回答 2

1

我对此进行了广泛的研究,并得出结论,无法让 Chrome 应用程序打开本地 PDF。我也尝试过数据 URI。

我认为问题不在于窗口中的 PDF 支持,因为它仍然是 Chrome,或者 PDF 的大小。相反,我认为这只是一个工程问题,有朝一日可能会得到解决。

至于我,我在我的 Chrome 应用程序中构建 PDF。由于无法显示,也没有服务器可以上传,所以我将其写入用户选择的文件中,让用户自己处理。

于 2013-12-06T21:22:36.497 回答
0

我已经完成了这项工作,但它是否适合您的解决方案在很大程度上取决于您的用例。解决方案分为三个部分:

  1. 使用 pdfjs 进行实际渲染。

要让它在打包的应用程序中运行,您需要对国际化支持做一些暴力。即使在您这样做之后,您也会发现某些 PDF 会无缘无故地拒绝加载。所以不要费心试图让 pdfjs 在打包的应用程序中工作。只是:

  1. 将您的整个应用程序放入一个<webview>带有持久化分区的分区中,并使用 HTML5 缓存清单来获取您的所有文件以供离线查看。

是的,是的,我知道缓存清单不再酷了。但是,如果您可以列出所有文件以在打包的应用程序中使用,那么您就是在做缓存清单实际上很好用的一种情况。

  1. 然后使用打包的应用程序在您的页面周围分发一个小包装器,其中包含 web 视图。

您还将获得这样的好处,即您不必重写您的应用程序以符合严格的打包应用程序规则(评估、同步 xhr、2GB 限制等)。

您可以在 m.kaon.com/c/ka 看到一个工作示例(使用 Chrome 访问以获取桌面应用程序;如果您使用 Firefox 访问该应用程序,您将可以访问使用相同技巧的托管应用程序)。PDF 位于底部的“为什么选择 Kaon”部分。

于 2015-03-02T18:58:16.927 回答