如何从ajax响应打开pdf

时间:2019-05-31 11:05:30

标签: ajax laravel-5

我正在尝试在新的浏览器标签中打开作为响应文本收到的PDF文档。

我的控制器代码是:

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord,'HTML');
$objWriter->save('helloWorld.html');
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('helloWorld.html');
$data = $pdf->stream();
return $data;

以及到目前为止的ajax代码(不起作用):

$('body').on('click', '.printInvoice', function () {
    var purchase_id = $(this).data("id");
        $.ajax({
            type: "GET",
            url: "/purchases/print" + '/' + purchase_id,
            success: function (data) {
                console.log(data);
                var blob = data;
                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.download = "PdfName-" + new Date().getTime() + ".pdf";
                document.body.appendChild(link);
                link.click();
            },
            error: function (data) {
                var data2 = JSON.parse(data.responseText);
                alert(data2['errors']);
            }
        });
});

上面的代码生成以下错误: “ URL”上的“ createObjectURL”:未找到与提供的签名匹配的函数。

请帮助修复以上代码,或为该问题提供更好的解决方案。

1 个答案:

答案 0 :(得分:0)

不要这样, 我有一个更好的选择给您!

不通过ajax发送信息。使用 window.location.href

示例代码:

$('body').on('click', '.printInvoice', function () {
   var purchase_id = $(this).data("id");
   window.location.href = "/purchases/print" + '/' + purchase_id;
});

别忘了在路线尽头死亡