如何在Chrome App中显示PDF的数据URI?

时间:2013-12-05 00:05:15

标签: window uri google-chrome-app

我有一个从JavaScript PDF库(jsPDF)生成的数据URI似乎没问题,因为当我用console.log显示它并将其粘贴到浏览器URL字段时,它可以工作。但是,我无法在Chrome应用程序窗口或普通浏览器窗口中显示Chrome应用程序。 URI的开头如下:

var uri = "data:application/pdf;base64,JVBERi0xLjMK ...";

当我这样做时:

chrome.app.window.create(uri);

窗口打开,但它正在尝试加载URI:

chrome-extension:// gapkhdeaendagkjpchhemfhbpfcjgmep / data:application / pdf; base64,JVBERi0xLjMK ......

并在窗口中显示消息“找不到此网页”。

当我这样做时:

window.open(uri);

window.open(chrome.runtime.getURL(uri));
绝对没有任何反应。不会打开浏览器窗口或选项卡,也不会向控制台写入任何消息。

有没有人这样做过?

1 个答案:

答案 0 :(得分:2)

chrome.app.window.create只会从打包的应用加载资源,因此您无法转义那里的chrome-extension://gapkhdea.../地址空间。

从打包的应用程序窗口调用时,

window.open将使用默认系统处理程序打开URL。我不知道任何具有为数据方案注册的默认处理程序的常见系统配置,这可能就是没有任何反应的原因。

如果您的目标是在打包的应用中显示任意不受信任的内容,那么您想要的是webview tag。您可以将Webview元素直接嵌入到应用程序窗口的内容中。您可以为data属性使用src URI,该属性可以动态分配。

根据您的Chrome版本,当Webview尝试加载PDF查看器插件时,您可能会遇到权限问题,但我只是使用一些PDF数据对其进行了测试,并在打包的应用内部显示了精美的PDF渲染。