【问题标题】:Open newly generated PDF in new window在新窗口中打开新生成的 PDF
【发布时间】:2015-10-17 05:19:06
【问题描述】:

我有一些代码可以生成 PDF,然后将其显示在屏幕上,而无需在服务器上创建 PDF。

我使用这段代码生成 PDF 并将其显示在创建按钮所在的同一窗口中:

using (Stream theStream = temp.GetStream())
                {
                    Response.Clear();
                    Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF");
                    Response.AddHeader("content-length", theStream.Length.ToString());
                    Response.ContentType = "application/pdf";

                    //Response.TransmitFile(theStream.ToString());

                    long theLen = theStream.Length;
                    byte[] theData = new byte[theLen >= 32768 ? 32768 : (int)theLen];
                    while (theLen > 0)
                    {
                        theStream.Read(theData, 0, theData.Length);
                        Response.BinaryWrite(theData);
                        theLen -= theData.Length;
                        if (theLen < theData.Length && theLen > 0)
                            theData = new byte[(int)theLen];
                    }


                }

如何让 PDF 显示在新窗口/标签中?

【问题讨论】:

    标签: c# asp.net pdf pdf-generation


    【解决方案1】:

    无法从服务器端代码强制新窗口。您应该考虑用链接替换按钮,如下所示:

     <form target="_blank" method="get" action="http://somesite.com/user/getpdf">
            <input type="submit" value="View PDF Invoice">
        </form>
    

    这将在新窗口中打开链接,您应该只返回在 /user/getpdf/ 调用中生成的 PDF 内容。

    【讨论】: