在对象标签中显示PDF文件

时间:2013-08-23 15:11:37

标签: html5 knockout.js durandal

我需要在使用Durandal框架构建的SPA应用程序中显示pdf文件。我正在利用" attr"敲除数据绑定以在运行时提供此pdf文件的URL。

<object data-bind="attr: { data: DocumentUrl() }" type="application/pdf" style="width: 100%; height: 100%"></object>

发出的html正确显示标签,

<object data="http://127.0.0.1:10000/devstoreaccount1/documents/TradeOverview.pdf" type="application/pdf" style="width: 100%; height: 100%; margin-right: 0px; margin-left: 0px; display: block; opacity: 1;" data-bind="attr: { data: DocumentUrl() }" data-view="durandal/../../templates/TnC/TnCDetails" data-active-view="true"></object>

但是,pdf文件不会显示在浏览器中! 当我在示例html文件中运行上面发出的html时,它可以工作。不知道为什么它没有通过我的主应用程序显示。有什么指针吗?

感谢。

1 个答案:

答案 0 :(得分:0)

这是因为浏览器不一致地处理动态&lt; object&gt;标签,通常这些标签是由不监听对象标签更改的ActiveX控件实现的。

追求的两个选择:

  1. 使用iframe并将其指向您的PDF。这将导致浏览器本地处理PDF(例如,Chrome使用自己的引擎显示PDF,Firefox使用JavaScript库显示PDF,IE使用ActiveX ...)。

  2. 如果PDF更改,则不是对象标记进行数据绑定,而是删除对象标记并在其位置写入新标记。浏览器接受DOM的更改就好了。