web-dev-qa-db-ja.com

新しいタブで.pdfを開く方法

目的:

一部のタスクが正しく完了した後、PDFを新しいタブに印刷する必要があります。

手順:サーバーに移動する必要があるメソッドを実行し、PDFを使用して新しいタブで開きます。これらを試してみましたが、機能しません。

Controller:エクスポート

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

解決しました!それは私のために働く

 window.open('/Export/PrintPdf');
19
user1520494
$("a[target!='_blank'][href$='.pdf']").attr("target", "_blank");
2
Timtech

誰かが同様の問題を抱えている場合、上記の解決策のいずれも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);
2
Jordash

PDFをダウンロードまたは表示するには、いくつかの方法があります。

  • 見る

Content-Type: application/pdfのように、応答ヘッダーでcontent-typeapplication/pdfとして設定できます。

そして、それをJavaScriptの新しいタブで開くために、このコードを追加してください。

window.open("Here Download PDF url", '_blank');
  • ダウンロード

content-typeapplication/octet-streamとしてapplication/octet-streamのように応答ヘッダーに設定する必要があります。

そしてdownload HTML5属性をaタグに追加するか、単にtarget = "_ blank"を追加します。

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

したがって、PDF.jsまたは3番目のライブラリを使用して、PDFをiFrameまたはインラインページで表示できます。

1
Sergio Reis

次のソリューションを使用できます

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

ここで、URLはPDFのURLです...

1
Ephy L

jQuery.deferred を使用してみてください。サンプル関数を用意しました。 getPdf呼び出しを処理してから、promiseを解決します。お役に立てれば

function getPDF() {
    return '';
}

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