24

目标:

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

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

控制器:出口

 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}")');
}
4

6 回答 6

32

解决了!这对我行得通

 window.open('/Export/PrintPdf');
于 2013-04-11T10:07:09.163 回答
7

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

  • 看法

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

为了在 javascript 中将其打开到新选项卡,请添加此代码。

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

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

并将下载HTML5 属性添加到标签或只是target="_blank"

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

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

于 2019-06-12T22:27:40.740 回答
5
$("a[target!='_blank'][href$='.pdf']").attr("target", "_blank");
于 2014-12-03T12:14:36.227 回答
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);
于 2018-02-06T19:03:06.663 回答
1

您可以使用以下解决方案

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

其中 URL 是 pdf 网址...

于 2017-03-25T23:54:38.070 回答
0

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

function getPDF() {
    return '';
}

getPdf()
  .then(function(response) {
    console.log('response here' + response);
    window.open(response);
  }).fail(function(){
      console.error('failed reposne');
  });
于 2018-11-20T08:24:18.750 回答