在iframe中显示PDF(Display PDF in iframe)

2019-06-26 10:57发布

我有我的网站到位的解决方案呈现使用下面的代码在一个完整的页面请求的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。 有什么明显的我失踪?

Answer 1:

使用一个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>


Answer 2:

其实,我解决了这个! 解决的办法是产生另一个aspx页面(showpdf.aspx)与呈现PDF(它是响应...代码的肉)的代码,然后调用在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"]);
        }


Answer 3:

您需要设置src="" ,以服务于PDF不同的URL。



Answer 4:

你试过了吗:

window.onload = function() {
     document.getElementById("iframepdf").src = "the URL that loads the PDF"
}


文章来源: Display PDF in iframe