目的:
一部のタスクが正しく完了した後、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}")');
}
解決しました!それは私のために働く
window.open('/Export/PrintPdf');
$("a[target!='_blank'][href$='.pdf']").attr("target", "_blank");
誰かが同様の問題を抱えている場合、上記の解決策のいずれも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);
PDFをダウンロードまたは表示するには、いくつかの方法があります。
Content-Type: application/pdf
のように、応答ヘッダーでcontent-typeをapplication/pdfとして設定できます。
そして、それをJavaScriptの新しいタブで開くために、このコードを追加してください。
window.open("Here Download PDF url", '_blank');
content-typeをapplication/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またはインラインページで表示できます。
次のソリューションを使用できます
jQuery('<form target="_blank" action="' + URL + '" method="get"></form>').appendTo('body').submit().remove();
ここで、URLはPDFのURLです...
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');
});