如何从Chrome打包应用程序启动PDF?

时间:2013-09-26 17:51:35

标签: javascript google-chrome pdf google-chrome-app

我的Chrome打包应用包含一个PDF,我想让用户查看它。如果我在当前框架中打开它,我会收到错误“Chrome PDF Viewer不被允许”。

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

  1. 我无法逼真地让用户转到chrome:// plugins并禁用
  2. 没有任何浏览器窗口,因此用户不知道发生了下载
  3. 有什么建议吗?打开嵌入在我的应用程序中的PDF是此应用程序的必备功能。

2 个答案:

答案 0 :(得分:1)

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

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

至于我,我在Chrome应用中构建了PDF。由于我无法显示它,并且没有服务器将其上传到,我将其写入用户选择的文件中,让用户自己处理它。

答案 1 :(得分:0)

我有这个工作,但它是否适合你的解决方案在很大程度上取决于你的用例。解决方案有三个部分:

  1. 使用pdfjs进行实际渲染。
  2. 要在打包的应用中运行,您需要对国际化支持做一些暴力。甚至在你这样做之后,你会发现有些PDF文件没有任何明显的原因而拒绝加载。因此,不要试图让pdfjs在打包的应用程序中运行。只是:

    1. 将整个应用程序放入带有持久分区的<webview>,并使用HTML5缓存清单让所有文件可供脱机查看。
    2. 是的,是的,我知道缓存清单不再酷了。但是,如果您可以列出所有文件以便在打包的应用程序中使用,那么您正在做一个缓存清单实际效果很好的案例。

      1. 然后使用打包的应用程序在页面周围分发一个小包装器,其中包含webview。
      2. 您还可以获得以下好处,即您无需重写应用程序以实现严格的打包应用规则(eval,同步xhr,2GB限制等)。

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

相关问题