代码之家  ›  专栏  ›  技术社区  ›  Beska

为什么我的PDF请求不可用?

  •  0
  • Beska  · 技术社区  · 14 年前

    我们正在尝试创建一个.NETASPX页面,其中包含PDF。通过硬编码实现这一点很容易。

    <object height="1250px" width="100%" type="application/pdf" data="our.pdf">
        <param value="our.pdf" name="src" />
        <param value="transparent" name="wmode" />
    </object>
    

    (不要太担心透明的东西…我们这样做是出于其他原因…但我在这里包括“以防万一”。)

    问题是当我们想要动态生成PDF时。在前端填充文本的代码如下所示:

    ltrPDF.Text = String.Format("<object height=\"1250px\" width=\"100%\" type=\"application/pdf\" data=\"ourPdfGenerator.aspx?var0={0}&var1={1}&var2={2}\">", var0, var1, var2);
    ltrPDF.Text += String.Format("<param value=\"ourPdfGenerator.aspx?var0={0}&var1={1}&var2={2}\">", var0, var1, var2);
    ltrPDF.Text += "<param value=\"transparent\" name=\"wmode\"/>";
    ltrPDF.Text += "</object>";
    

    有点难看,但似乎应该管用。但事实并非如此。

    当我调试并在我们的pdfgenerator.aspx.cs Page\u Load方法的第一行上放置一个断点时,我毫不费力地到达了断点。但是,我们要做的第一件事是尝试使用Request.QueryString:

    string var0 = Request.QueryString["var0"];
    

    • 为什么没有?
    • 我能怎么办?

    编辑:(作为旁白,我知道从aspx页面请求mime类型的pdf似乎有点奇怪…但是我们以前使用过aspx页面生成cs页面…我们会这样做:

    Response.Clear();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment;filename=\"our.pdf\"");
    using (MemoryStream pdfStream = new MemoryStream())
    {
        ourSpecialPdfGenerator.ExportToPdf(pdfStream);
        Response.BinaryWrite(pdfStream.ToArray());
    }
    Response.End();
    

    这在其他环境中已经运行了一段时间…但始终是它自己的页面。我们现在所做的不同之处在于,我们没有直接调用这个页面,而是尝试嵌入它,所以它是从 <object> 标签,这显然是造成问题的原因。。。

    1 回复  |  直到 14 年前
        1
  •  1
  •   David    14 年前

    ourPdfGenerator.aspx.cs . 你的 object 标签很好。你能把密码寄到吗 我们的PDFGenerator.aspx.cs ?