【问题标题】:Open pdf in new tab (FireFox and IE 8) using EXTJS, JAVASCRIPT使用 EXTJS、JAVASCRIPT 在新选项卡(FireFox 和 IE 8)中打开 pdf
【发布时间】:2014-08-16 08:23:39
【问题描述】:

我正在使用 EXTJS,我有一个链接,用于打开 PDF 文件。 问题是pdf没有在导航器中打开,但是已经下载了! 我正在使用的代码如下(我在堆栈中找到!)

var win = window.open(url, '_blank');

win.focus();

我在搞什么鬼?

【问题讨论】:

  • IE8 不附带 PDF 渲染器,因此它本身无法“在选项卡中渲染 PDF”。如果您安装了 Adob​​e Reader 或其他 PDF 渲染器,他们通常会在浏览器中添加一个插件来执行此操作。如果您没有插件,则将下载该文件。有些人,包括我自己,实际上是故意禁用内联模式的。根据您的 Firefox 版本,您可能会遇到类似的问题。

标签: javascript pdf extjs extjs4


【解决方案1】:

浏览器根据收到的 HTTP 标头决定是打开文件还是内联显示(在新选项卡中)。

要下载,服务器会发送此标头:

Content-Disposition: Attachment; filename="somefile.pdf"

为了显示内联,服务器发送此标头:

Content-Disposition: Inline

【讨论】:

  • 如何从服务器发送这个?就我而言,我从服务器返回的是文件名和路径!
  • 我不知道您使用哪种服务器语言。在我使用的 PHP 中,有一个函数 header(...); 可以用来发送标头。我写了一个相反的例子——发送标题来下载文件——但我认为你可以根据自己的需要调整它。在这里:extjs.eu/ext-examples/#downloading-file
  • emm ..我第一个端口不是很清楚,其实我从服务器返回的,是路径名,而pdf文件不在服务器中,其实是在我电脑的目录中!所以我返回的是一个字符串 la this : 'D:/DATA/myPDFFile.pdf'
  • 那么它就完全掌握在浏览器手中,无论是在 Ext 还是服务器中,你都无能为力。可能浏览器设置适用于这种情况。顺便说一句,远程服务器会返回本地路径听起来很奇怪 - 服务器怎么知道文件在那里?
  • 其实我犯了一个错误,事实上,你提出的解决方案对我来说很好。非常感谢^^
【解决方案2】:

我使用的示例代码:

{
xtype: 'button',
html: '<p class = "i-custom-right-menu-items-text">'+'Download Application 
       form'+'</p>',
cls: 'i-custom-right-menu-buttons',
width: '80%',
padding: '2 0 0 10',
iconCls: 'd-ball-modal-right-menu crtmenu',
handler: function () {
    window.open('./resources/MYPDF.pdf', '_blank');}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2012-06-22
    • 1970-01-01
    • 2019-10-27
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多