我的网站有一个解决方案,可以使用下面的代码在整页中呈现所请求的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属性作为文件名,但问题似乎是在Page_Load事件触发之前加载iframe,因此不会创建PDF。有什么明显的东西我不见了吗?
答案 0 :(得分:8)
使用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>
答案 1 :(得分:1)
我实际上解决了这个问题!解决方案是生成另一个aspx页面(showpdf.aspx),其中包含呈现PDF的代码(它的内容是Response ...代码),然后在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"]);
}
答案 2 :(得分:0)
您需要将src=""
设置为提供PDF的其他网址。
答案 3 :(得分:0)
你有没有尝试过:
window.onload = function() {
document.getElementById("iframepdf").src = "the URL that loads the PDF"
}