2016-04-18 10 views
5

У меня есть веб-форма, на которой я использовал ajax toolkit's HtmlEditorExtender1. Он работает нормально. Теперь я пытаюсь преобразовать всю веб-форму в pdf с помощью iTextSharp при нажатии кнопки. Но я получаю эту ошибку:Управление расширителем «HtmlEditorExtender1» не является зарегистрированным регулятором расширения.

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(); 
} 

EDIT:

Я получаю эту ошибку на:

this.Page.RenderControl(hw); 

enter image description here

+0

У вас есть '<жерех: ScriptManager ID = "ScriptManager1" Runat = "сервер"> ' в asp.net веб-формы –

+0

@syedmhamudulhasanakash в главной странице, да. – Arbaaz

+0

@syedmhamudulhasanakash Я только что проверил .. Я не могу найти сценариста ни на главной странице, ни на дочерней странице. Я попробовал добавить диспетчера сценариев на дочернюю страницу, но потом я получил ошибку, которую можно добавить только один экземпляр scriptmanager. Странно. – Arbaaz

ответ

0

Если PDF генерируется correclty

попробуйте этот код

 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.