将PDF传输到浏览器?

use*_*877 4 c# pdf asp.net stream

有谁能告诉我如何将pdf流式传输到新的标签浏览器?我只是在内存上有pdf流,当我点击链接在新标签页或窗口浏览器中显示PDF时我想要.我怎么能这样做?谢谢!!!

我有这个链接:

<a id="hrefPdf" runat="server" href="#" target="_blank"><asp:Literal ID="PdfName" runat="server"></asp:Literal></a>
Run Code Online (Sandbox Code Playgroud)

在我的代码后面我在onload事件上有这个:

                Stream pdf= getPdf
                if (pdf != null)
                {
                    SetLinkPDF(pdf);
                }

    private void SetLinkPDF(IFile pdf)
    {
        hrefPdf.href = "MyPDF to the Browser"
        PdfName.Text = pdf.PdfName;      
    }
Run Code Online (Sandbox Code Playgroud)

不过,我必须处理流pdf(IFile包含PDF的名称,流,元数据等)

我可以做些什么来处理这个以及当我点击在新浏览器中显示流时?

我有另一个问题,是OnClientClick ="aspnetForm.target ='_ blank';" timbck2建议我.我必须在新窗口中打开文件(图像或pdf),我该怎么办?不工作这个.谢谢!

Timbbck2我的asp代码是:

<asp:LinkButton runat="server" ID="LinkButtonFile" OnClick="LinkButtonFile_Click" OnClientClick="aspnetForm.target = '_blank';"></asp:LinkButton>
Run Code Online (Sandbox Code Playgroud)

谢谢!!!

tim*_*ck2 12

我是从磁盘上的文件中完成的 - 从内存流中发送数据应该不会有太大的不同.除了数据本身之外,您还需要向浏览器提供两个元数据.首先,您需要提供数据的MIME类型(在您的情况下application/pdf),然后是Content-Length标头中的数据大小(以整数形式),然后发送数据本身.

总而言之(考虑到评论以及我认为您的要求,您的标记将如下所示:

<asp:LinkButton ID="whatever" runat="server" OnClick="lnkButton_Click" 
  OnClientClick="aspnetForm.target='_blank';">your link text</aspnet:LinkButton>
Run Code Online (Sandbox Code Playgroud)

你的代码中的这几行C#代码应该可以做到(或多或少):

protected void lnkButton_Click(object sender, EventArgs e)
{
    Response.ClearContent();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "inline; filename=" + docName);
    Response.AddHeader("Content-Length", docSize.ToString());
    Response.BinaryWrite((byte[])docStream);
    Response.End();
}
Run Code Online (Sandbox Code Playgroud)