强制pdf在新标签页中打开

时间:2013-11-07 15:18:20

标签: jquery asp.net-mvc-3 pdf

目前我正在开发一个应用程序,其中弹出一个对话框,其中包含正在接收的项目的详细信息(用户只输入收到的金额)。用户输入更改(收到的金额)然后保存。保存后,我提示用户通过确认创建pdf(客户希望看到硬拷贝中的更改)。正确生成pdf并通过打开/保存/取消对话框提供给用户。

我的问题是,有没有办法强制pdf自动打开而不提示打开/保存/取消?我之所以希望能够在pdf弹出时关闭幕后对话框,以便用户不必自己关闭它。

以下是我到目前为止的情况。

查看

$.getJSON('@Url.Action("ReceiveProduct", "PurchaseOrder")', model, function (result) {
                    //Save was successful
                    if (result) {
                        var createPrintOut = confirm("Do you wish to create a print out?");
                        if (createPrintOut) {
                            var url = '@Url.Action("ViewPrintOut", "PurchaseOrder")';
                            window.location = url + "?POId=" + $("#PurchaseOrderId").val() + "&PId=" + $("#ProductId").val();
                        }

控制器

public ActionResult ViewPrintOut(int POId, int PId)
        {
            //Make sure user has proper permissions
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders))
                return AccessDeniedView();

            var purchaseOrder = _purchaseOrderService.GetPurchaseOrderById(POId);

            string fileName = string.Format("purchaseorderproduct_{0}_{1}.pdf", PId, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss"));
            string filePath = System.IO.Path.Combine(this.Request.PhysicalApplicationPath, "content\\files\\ExportImport", fileName);
            _pdfService.PrintPurchaseOrderProductsToPdf(purchaseOrder, PId, _workContext.WorkingLanguage, filePath);
            var bytes = System.IO.File.ReadAllBytes(filePath);
            return File(bytes, "application/pdf", fileName);
        }

1 个答案:

答案 0 :(得分:1)

在return语句之前添加以下行。

Response.AppendHeader("Content-Disposition", "inline; filename="+ filename);

并删除Return中的文件名引用。

return File(bytes, "application/pdf");

将Window.Location更改为

window.open(Yoururl,'_blank');