扩展控件“HtmlEditorExtender1”未注册为扩展控件。

5

我有一个webform,其中使用了ajax工具包的HtmlEditorExtender1。它运行良好。现在我想在单击按钮时使用iTextSharp将整个webform转换为pdf。但是我遇到了以下错误:

Extender control 'HtmlEditorExtender1' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors().
Parameter name: extenderControl

我认为这与 HtmlEditorExtender1 有关。
 <ajaxToolkit:HtmlEditorExtender ID="HtmlEditorExtender1" runat="server" TargetControlID="txtkeyresultforyear" EnableSanitization="false" />

我的网络表格顶部如下所示:

<%@ Page Title="" Language="C#" MasterPageFile="~/ModuleMain.master" AutoEventWireup="true"
    ValidateRequest="false" CodeBehind="xyz.aspx.cs" EnableEventValidation = "false" Inherits="abc.xyz" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>

这是我在按钮点击时的代码:

protected void btntopdf_Click(object sender, EventArgs e)
{
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    this.Page.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();
}

编辑:

我在以下位置遇到了这个错误:

this.Page.RenderControl(hw);

enter image description here


你的 asp.net web form 中是否有 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> - Syed Mhamudul Hasan
在主页面中,是的,@syedmhamudulhasanakash。 - SamuraiJack
@syedmhamudulhasanakash 我刚刚检查了一下,无论是在母版页还是子页面上都找不到ScriptManager。我尝试将ScriptManager添加到子页面上,但是出现了错误,提示只能添加一个ScriptManager实例。这很奇怪。 - SamuraiJack
@syedmhamudulhasanakash 我仔细查看了一下,发现我的页面继承自一个主页面,而这个主页面又继承自另一个主页面。这个主页面的主页面上有一个脚本管理器。 - SamuraiJack
抱歉,我无法帮助您解决问题,我只知道那行代码最终会产生损坏的PDF文件,应该将其删除。 - Chris Haas
显示剩余4条评论
1个回答

0
如果您的PDF已经正确生成,
那么请尝试这段代码。
        pdfWriter.CloseStream = false;
        pdfDoc.Close();
        HttpContext.Current.Response.Buffer = true;
        HttpContext.Current.Response.ContentType = "application/pdf";
        HttpContext.Current.Response.AddHeader("content-disposition:", "attachment;filename=" + _fileName + ".pdf");
        //  HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.Write(pdfDoc);

保存为PDF格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接