9
Answers

Converting Asp.net Webpage to PDF using Itextsharp

santosh kumar

santosh kumar

7y
236
1
I get the below error while converting asp.net webpage to pdf
 
Script control 'UpdateProgress1' is not a registered script control. Script controls must be registered using RegisterScriptControl() before calling RegisterScriptDescriptors().
 
Code behind file as below:
 
protected void btnExport_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);(Exception occurs here)
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();
}
 
Attached the codebehind and aspx pages.
 
Request you to help me in finding the sloution 
 
Thanks and Regards,
Santosh Kumar 
 

Attachment: TicketDetail.zip

Answers (9)
1
Manav Pandya

Manav Pandya

NA 7.1k 24k 7y
Hello 
 
Type following line in OnPrerender method :
 
  1. base.OnPreRender(e);  
It may occur also if scriptmanager is not placed properly :
 
Add scriptmanager in oninit event of webpart 
 
Thanks 
1
Manav Pandya

Manav Pandya

NA 7.1k 24k 7y
Hello
 
Try to put inside button click event if possible 
 
Thanks 
1
Manav Pandya

Manav Pandya

NA 7.1k 24k 7y
Hello 
 
You can write this within pageload event , so that it will register before you use it
 
Thanks 
1
Manav Pandya

Manav Pandya

NA 7.1k 24k 7y
Hello
 
Following code working for me :
 
  1. ScriptManager sm = ScriptManager.GetCurrent(Page);  
  2. sm.RegisterScriptControl(control_name);  
Than make it visible :
 
  1. control_name.Visible = true;  
Thanks 
0
Leon D

Leon D

NA 479 51 7y
You can try to use Spire.Doc to convert aspx page to pdf. The code is like the following:
  1. Document document = new Document();  
  2.             using (MemoryStream buffer = new MemoryStream())  
  3.             {  
  4.                 using (TextWriter writer = new StreamWriter(buffer, Encoding.UTF8))  
  5.                 {  
  6.                     using (HtmlTextWriter htmlWriter = new HtmlTextWriter(writer))  
  7.                     {  
  8.                         this.RenderControl(htmlWriter);  
  9.                         htmlWriter.Flush();  
  10.                         writer.Flush();  
  11.                         buffer.Position = 0;  
  12.   
  13.                         string stylesheet = "Default.css";  
  14.                         using (StreamReader reader = new System.IO.StreamReader(buffer, Encoding.UTF8))  
  15.                         {  
  16.                             String baseHref = Request.Url.AbsoluteUri;  
  17.                             document.LoadHTML(reader, baseHref, Spire.Doc.Documents.XHTMLValidationType.None);  
  18.                             document.HtmlExportOptions.CssStyleSheetType = CssStyleSheetType.External;  
  19.                             document.HtmlExportOptions.CssStyleSheetFileName = stylesheet;  
  20.                             document.SaveToFile("Test.pdf", Spire.Doc.FileFormat.PDF, Response, HttpContentType.Attachment);  
  21.                         }  
  22.                     }  
  23.                 }  
  24.             }   
0
santosh kumar

santosh kumar

NA 11 248 7y
Hi Manav,
 
Done the changes as you mentioned but still getting the same error.
 
Thanks 
0
santosh kumar

santosh kumar

NA 11 248 7y
Hi Manav,
 
Yes, even tried by keeping these 3 lines of code in button_click event.
 
But still  getting the same error
 
ScriptControl UpdateProgress1 is not registered. 
 
Thanks 
0
santosh kumar

santosh kumar

NA 11 248 7y

Attachment TicketDetail.zip

Hi Manav,
 
When I add the below three lines in page_load event
 
ScriptManager sm = ScriptManager.GetCurrent(Page);
sm.RegisterScriptControl(UpdateProgress1);
UpdateProgress1.Visible = true;
 
I am getting the below error
 
Script controls may not be registered before PreRender.
 
So added it under OnPrerender event but then the same error 
 
UpdateProgress1 Control is not registered error comming.
 
Am i missing any thing.
 
If possible please check my code behind and aspx pages attached to this post 
 
Thanks 
 
 
0
santosh kumar

santosh kumar

NA 11 248 7y
Hi Manav,
 
Where exactly i need to add these 2 lines of code .
 
Do i need to add these lines in button_click functionality of my .cs file?
 
Thanks