如何在新标签页上打开.pdf文件

时间:2013-04-11 08:39:24

标签: javascript jquery asp.net-mvc-3 url.action

目标:

在某些任务正确完成后,我必须在新标签上打印PDF。

步骤:我想执行一个应该转到服务器的方法,获取PDF并在新的Tab上打开它,我正在尝试使用这些但是不起作用:

控制器:导出

 public ActionResult PrintPdf()
    {
        Response.AppendHeader("Content-Disposition", "inline; filename= " + MyClassPdfWriter.GetFileName);
        return File(MyClassPdfWriter.GetMemoryStream, "application/pdf");
    }

查看

function TasksSucced(){
      $.get('@Url.Action("PrintPdf", "Export", "new {target = _blank}")');
}

6 个答案:

答案 0 :(得分:17)

解决!这对我有用

 window.open('/Export/PrintPdf');

答案 1 :(得分:2)

$("a[target!='_blank'][href$='.pdf']").attr("target", "_blank");

答案 2 :(得分:2)

如果有人遇到类似的问题,上述解决方案都无法在Google Chrome中使用(他们在Firefox中运行)

此代码适用于所有主流浏览器:

var a = document.createElement('A');
var filePath = 'https://pathtopdf.com/file.pdf';
a.href = filePath;
a.download = filePath.substr(filePath.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);

答案 3 :(得分:1)

您可以使用以下解决方案

   jQuery('<form target="_blank" action="' + URL + '" method="get"></form>').appendTo('body').submit().remove();

其中URL是pdf网址...

答案 4 :(得分:0)

您可以尝试使用jQuery.deffered。我为您准备了示例函数。它将处理getPdf调用,然后解决Promise。希望这会有所帮助

function getPDF() {
    return '';
}

getPdf()
  .then(function(response) {
    console.log('response here' + response);
    window.open(response);
  }).fail(function(){
      console.error('failed reposne');
  });

答案 5 :(得分:0)

有几种下载或查看PDF的方法。

  • 查看

您可以在响应标题中将内容类型设置为 application / pdf ,就像Content-Type: application/pdf

并且为了将其打开到javascript中的新标签,请添加此代码。

window.open("Here Download PDF url", '_blank');
  • 下载

您需要在响应标头中将内容类型设置为 application / octet-stream ,就像application/octet-stream

并将下载 HTML5属性添加到 a 标记或 target =“ _ blank”

<a href="PDF URL" download="pdf">Download</a>
<a href="PDF URL" target="_blank">Download</a>

因此,您可以使用PDF.js或3rd库在iFrame或嵌入式页面中查看PDF。