使用Ajax下载.net Core生成的pdf文件

时间:2018-08-27 10:40:09

标签: jquery .net asp.net-core

我正在努力使用ajax调用以.net内核下载生成的pdf。基本上我有一个用户需要选择然后打印pdf输出的订单列表。我可以使用带有动作链接的按钮来做到这一点,但是我需要以某种方式传递选定的值(选定的复选框),因此我使用ajax并传递这些值。

到目前为止,我有这个:

html:

<button id="btnPrintSelectedOrdersDeliveryLabels">Print labels</button>

c#:

return File(Convert.FromBase64String(deliveryAPIprintLabelsResult.Labels), "application/pdf", "delivery_labels.pdf");

javascript:

       $.ajax({
        method: "GET",
        url: '@Url.Action("PrintDeliveryLabelsByOrderId", "Delivery")',
        cache: false,
        data: {
            orderIds: JSON.stringify(orderIds)
        },
        success: function(result) {

            var blob = new Blob([result], { type: 'application/pdf' });
            var link = document.createElement('a');
            link.href = window.URL.createObjectURL(blob);
            link.download = 'delivery_labels.pdf';

            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);

        },
        error: function() {
            console.log('error!');
        }
    });       
}

我很确定该错误在ajax成功调用中,因为我得到了pdf,但它为空白。

1 个答案:

答案 0 :(得分:0)

我知道了。 jQuery不支持“ blobs”,因此最终解决方案应使用XHR。