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 属性を使用することになっていることはわかっていますが、問題は Page_Load イベントが発生する前に iframe が読み込まれるため、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) を生成し (その要は 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"]);
        }
于 2012-07-22T19:52:32.310 に答える
0

試しましたか:

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

src=""PDF を提供する別の URL にを設定する必要があります。

于 2012-07-22T19:22:09.933 に答える