简体   繁体   English

如何在新的标签页或窗口中打开PDF文件而不是下载文件(使用asp.net)?

[英]How to open PDF file in a new tab or window instead of downloading it (using asp.net)?

This is the code for downloading the file. 这是用于下载文件的代码。

System.IO.FileStream fs = new System.IO.FileStream(Path+"\\"+fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] ar = new byte[(int)fs.Length];
fs.Read(ar, 0, (int)fs.Length);
fs.Close();

Response.AddHeader("content-disposition", "attachment;filename=" + AccNo+".pdf");
Response.ContentType = "application/octectstream";
Response.BinaryWrite(ar);
Response.End();

When this code is executed, it will ask user to open or save the file. 执行此代码后,它将要求用户打开或保存文件。 Instead of this I need to open a new tab or window and display the file. 取而代之的是,我需要打开一个新的选项卡或窗口并显示文件。 How can I achieve this? 我该如何实现?

NOTE: 注意:

File won't necessary be located in the website folder. 文件不必位于网站文件夹中。 It might be located in an other folder. 它可能位于另一个文件夹中。

Instead of loading a stream into a byte array and writing it to the response stream, you should have a look at HttpResponse.TransmitFile 与其将流加载到字节数组中并将其写入响应流,还不如看看HttpResponse.TransmitFile。

Response.ContentType = "Application/pdf";
Response.TransmitFile(pathtofile);

If you want the PDF to open in a new window you would have to open the downloading page in a new window, for example like this: 如果要在新窗口中打开PDF,则必须在新窗口中打开下载页面,例如:

<a href="viewpdf.aspx" target="_blank">View PDF</a>
Response.ContentType = contentType;
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=" + fileName);
Response.BinaryWrite(fileContent);

And

<asp:LinkButton OnClientClick="openInNewTab();" OnClick="CodeBehindMethod".../>

In javaScript: 在javaScript中:

<script type="text/javascript">
    function openInNewTab() {
        window.document.forms[0].target = '_blank'; 
        setTimeout(function () { window.document.forms[0].target = ''; }, 0);
    }
</script>

Take care to reset target , otherwise all other calls like Response.Redirect will open in a new tab, which might be not what you want. 请务必重置target ,否则所有其他调用(如Response.Redirect将在新选项卡中打开,这可能不是您想要的。

this may help 这可能会有所帮助

Response.Write("<script>");
Response.Write("window.open('../Inventory/pages/printableads.pdf', '_newtab');");
Response.Write("</script>");

You have to create either another page or generic handler with the code to generate your pdf. 您必须使用代码创建另一个页面或通用处理程序,以生成pdf。 Then that event gets triggered and the person is redirected to that page. 然后触发该事件,并将该人重定向到该页面。

you can return a FileResult from your MVC action. 您可以从MVC操作返回FileResult。

*********************MVC action************ ********************* MVC动作************

    public FileResult OpenPDF(parameters)
    {
       //code to fetch your pdf byte array
       return File(pdfBytes, "application/pdf");
    }

**************js************** ************** js **************

Use formpost to post your data to action 使用formpost发布您的数据以采取行动

    var inputTag = '<input name="paramName" type="text" value="' + payloadString + '">';
    var form = document.createElement("form");
    jQuery(form).attr("id", "pdf-form").attr("name", "pdf-form").attr("class", "pdf-form").attr("target", "_blank");
    jQuery(form).attr("action", "/Controller/OpenPDF").attr("method", "post").attr("enctype", "multipart/form-data");
    jQuery(form).append(inputTag);
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
    return false;

You need to create a form to post your data, append it your dom, post your data and remove the form your document body. 您需要创建一个表单来发布您的数据,将其附加到您的dom,发布您的数据并删除该表单您的文档正文。

However, form post wouldn't post data to new tab only on EDGE browser . 但是,表单发布不会仅在EDGE浏览器上将数据发布到新选项卡。 But a get request works as it's just opening new tab with a url containing query string for your action parameters. 但是, 获取请求可以正常工作,因为它只是打开一个新标签,并在其中包含包含您的操作参数查询字符串的url。

Here I am using iTextSharp dll for generating PDF file. 在这里,我正在使用iTextSharp dll生成PDF文件。 I want to open PDF file instead of downloading it. 我想打开PDF文件而不是下载它。 So I am using below code which is working fine for me. 所以我正在使用下面的代码,对我来说很好。 Now pdf file is opening in browser ,now dowloading 现在pdf文件正在浏览器中打开,现在正在下载

        Document pdfDoc = new Document(PageSize.A4, 25, 10, 25, 10);
        PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
        pdfDoc.Open();
        Paragraph Text = new Paragraph("Hi , This is Test Content");
        pdfDoc.Add(Text);
        pdfWriter.CloseStream = false;
        pdfDoc.Close();
        Response.Buffer = true;
        Response.ContentType = "application/pdf";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.End();

If you want to download file, add below line, after this Response.ContentType = "application/pdf"; 如果要下载文件,请在此Response.ContentType =“ application / pdf”之后添加以下行:

Response.AddHeader("content-disposition", "attachment;filename=Example.pdf");   

Use this code. 使用此代码。 This works like a champ. 这就像冠军。

Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = outputPdfFile;
process.Start();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在新选项卡或窗口中打开PDF文件,而不是使用C#和ASP.NET MVC下载它? - How to open PDF file in a new tab or window instead of downloading it using C# and ASP.NET MVC? 如何在新标签Asp.net中打开pdf文件 - How to open pdf file in new tab Asp.net 在新浏览器中打开 PDF 文件 ASP.NET Core 3 中的 window - Open PDF file in new browser window in ASP.NET Core 3 asp.net:如何使用c#在新窗口(不是标签页或当前页面)中打开新的asp.net页 - asp.net: How to open a new asp.net page in new window (not tab or current page) using c# 如何在ASP.NET C#中使用GridView行命令在浏览器的新选项卡中打开PDF文件 - How To Open PDF Files In New Tab In Browser Using GridView Row Command In ASP.NET C# 如何使用asp.net C#在Chrome的新标签页中打开打开的PDF - How to itextsharp PDF open in new tab in chrome using asp.net c# MVC.Net在新窗口中打开文件,而不是下载 - MVC.Net Open a file in a new window instead of downloading ASP.NET MVC - 在新标签上有条件地打开PDF /图像 - ASP.NET MVC - Conditionally open PDF/Image on new Tab 如何打开从Iframe重定向的页面,以在ASP.NET的父窗口中作为新标签打开? - How to open the redirected page from Iframe to open as a new tab in the parent window in ASP.NET? 如何使用控制器打开pdf文件? ASP.NET MVC - How to open a pdf file using the controller? Asp.net MVC
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM