1

我正在尝试创建一个将其所在页面转换为 PDF 的控件。

protected void ConvertPageToPDF_click(object sender, EventArgs e)
{
    string pageHtml;
    byte[] pdfBytes;

    string url = HttpContext.Current.Request.Url.AbsoluteUri;

    // get the HTML for the entire page into pageHtml
    HtmlTextWriter hw = new HtmlTextWriter(new StringWriter());
    this.Page.RenderControl(hw);
    pageHtml = hw.InnerWriter.ToString();

    // send pageHtml to a library for conversion
    // send the PDF to the user
}

这部分有效。在我的页面上,我有几个转发器;他们的内容没有出现在pageHtml. 关于为什么会这样的任何想法?我应该如何解决这个问题?

4

1 回答 1

2

事实证明,我必须在数据绑定到控件后渲染控件。我的 click 方法只是添加了一个事件处理程序:

protected void ConvertRepeaterToPDF_click(object sender, EventArgs e)
{
    // handle the PreRender complete method
    Page.PreRenderComplete += new EventHandler(Page_OnPreRenderComplete);
}

然后在 Page_OnPreRenderComplete 中我可以像上面一样使用 RenderControl。

于 2012-06-14T13:50:33.147 回答