3

我为我的网站准备了一个解决方案,该解决方案使用下面的代码在整页中呈现请求的 PDF 文档。现在我的客户希望在 iframe 中呈现文档。我似乎无法让它轻松工作,也许我遗漏了一些明显的东西。第一个代码将在新窗口中正确显示 PDF。

        if (File.Exists(filename))
        {            
            //Set the appropriate ContentType.
            Response.ContentType = "Application/pdf";
            Response.WriteFile(filename);
            Response.End();
        }
        else Response.Write("Error - can not find report");

iframe 代码如下所示:

<iframe runat="server" id="iframepdf" height="600" width="800" > </iframe>

我知道我应该使用 src 属性作为文件名,但问题似乎是 iframe 在 Page_Load 事件触发之前加载,因此没有创建 PDF。我有什么明显的遗漏吗?

4

4 回答 4

10

使用 ASHX 处理程序。getmypdf.ashx.cs 处理程序的源代码应如下所示:

using System;
using System.Web;

public class getmypdf : IHttpHandler 
{
  public void ProcessRequest(HttpContext context)
  {
        Response.ContentType = "Application/pdf";
        Response.WriteFile("myfile.pdf");
        Response.End();
  }

  public bool IsReusable 
  {
    get 
    {
      return false;
    }
  }
}

getmypdf.ashx 将包含如下内容:

<% @ webhandler language="C#" class="getmypdf" %>

你的 iframe 看起来像这样:

<iframe runat="server" id="iframepdf" height="600" width="800" src="..../getmypdf.ashx"> </iframe>
于 2012-07-22T19:31:30.870 回答
2

我真的解决了这个问题!解决方案是生成另一个带有呈现 PDF 的代码的 aspx 页面 (showpdf.aspx)(它的核心是响应...代码),然后在 iframe 中调用该代码。我从源页面传递了必要的变量。谢谢大家!

<iframe runat="server" id="iframepdf" height="600" width="800"  >  
</iframe>

        protected void Page_Load(object sender, EventArgs e)
        {
            String encounterID = Request.QueryString["EncounterID"];
            iframepdf.Attributes.Add("src", "showpdf.aspx?EncounterID=" + Request.QueryString["EncounterID"]);
        }
于 2012-07-22T19:52:32.310 回答
0

您需要将 设置为src=""提供 PDF 的不同 URL。

于 2012-07-22T19:22:09.933 回答
0

你试过了吗:

window.onload = function() {
     document.getElementById("iframepdf").src = "the URL that loads the PDF"
}
于 2012-07-22T19:33:05.690 回答