I have a solution in place for my site that renders a requested PDF document in a full page using the code below. Now my client wants the document rendered within an iframe. I can't seem to get it to work readily, maybe I am missing something obvious. The first code will properly display the PDF in a new window.
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");
The iframe code looks like this:
<iframe runat="server" id="iframepdf" height="600" width="800" > </iframe>
I know I am supposed to use the src attribute for the filename, but the problem seems to be that the iframe loads before the Page_Load event fires, so the PDF is not created. Is there something obvious I am missing?
Use an ASHX handler. The source code to your getmypdf.ashx.cs handler should look something like this:
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 would contain something like this:
<% @ webhandler language="C#" class="getmypdf" %>
And your iframe would look like this:
<iframe runat="server" id="iframepdf" height="600" width="800" src="..../getmypdf.ashx"> </iframe>
I actually solved this! The solution was to generate another aspx page (showpdf.aspx) with the code that renders the PDF (the meat of it being the Response... code), then call that code in the iframe. I pass the necessary variable from the source page. Thanks all!
<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"]);
}
You need to set the src=""
to a different URL that serves a PDF.
Did you try:
window.onload = function() {
document.getElementById("iframepdf").src = "the URL that loads the PDF"
}