【问题标题】:open PDF in new tab C#在新标签 C# 中打开 PDF
【发布时间】:2014-03-26 12:56:06
【问题描述】:

当我在网络上显示 PDF 文件时,我想在新选项卡中打开它。 但无需单击仅在新选项卡中打开文件的功能。 这是我的显示功能:

private void DisplayPage()
    {        
        string path = CanvasWritingStepImages._pdfName;
        WebClient client = new WebClient();
        Byte[] buffer = client.DownloadData(path);

        if (buffer != null)
        {
            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", "inline; filename=Formulike.pdf");
            Response.AddHeader("content-length", buffer.Length.ToString());
            Response.BinaryWrite(buffer);
        }
        else
        {
            logger.Error("Buffer was Null!");
            throw new Exception("PDF ERROR");
        }
    }

我正在使用“iTextSharp”来处理 PDF 文件。 重要的是 PDF 文件将在新选项卡上打开,而无需通过该功能进行任何点击。 我刚刚发现单击按钮会打开一个新标签。

我试过这个: How to open PDF file in a new tab or window instead of downloading it (using asp.net)?

【问题讨论】:

  • 与弹出窗口拦截器作斗争(这是您的问题所在 - 在没有用户操作的情况下打开新窗口)是非常有争议的话题。请注意,不太可能获得始终有效/将继续有效的答案。

标签: c# jquery pdf itextsharp


【解决方案1】:

我有一个非常相似的问题...请参阅我的问题here

将您的 pdf 创建代码放入新页面的 form load 事件中。然后使用下面的代码在新标签页中打开该页面。

string url = "myPDFpage.aspx";
string openWindowScript = string.Format("window.open({0}, '_blank');", url);         
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Guid.NewGuid().ToString(), openWindowScript, true);         

如果您没有使用ScriptManager,您可以将最后一行替换为以下内容:

Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), openWindowScript, true);

如果您的 pdf 需要创建变量,请通过查询字符串传递它们或将它们存储在会话变量中,以便新页面可以访问它们。

除非用户允许来自您网站的弹出窗口或关闭他们的阻止程序,否则新标签/窗口将被阻止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 2017-01-24
    • 2018-12-14
    • 2017-05-24
    • 2018-11-05
    • 2017-07-30
    • 1970-01-01
    • 2016-12-23
    相关资源
    最近更新 更多