Hello, I am using itextsharp dll version 5.0.1, and convering the Html to pdf . I am getting error of object reference is not set to an object. Some times it will convert HTML to PDF but some times it throws error. Will any body please let me know that how to resolve this issue, its urgent.
I am also using the chart control in it. Below is my HTML and C# code. <div id="pnlPDF"> <table> <tr> <td align="left" class="rptHeading"> <b>Report</b> </td> </tr> <tr> <td align="left"> <span id="lblName">tester</span> </td> </tr> <tr> <td align="left"> <span id="lblSurveyCompletedDate">July, 02 2012</span> </td> </tr> <tr> <td> </td> </tr> </table> <table> <tr> <td align="left" class="smallHeading"> <b>Introduction</b> </td> </tr> <tr> <td valign="top" style="font-size: 11px; width: 100%; text-align: justify;"> <span id="lblIntroduction">Congratulations! </span> </td> </tr> <tr> <td> </td> </tr> </table> <table> <tr> <td align="left" class="smallHeading"> <b>Summary Results</b> </td> </tr> <tr> <td align="left" valign="top"> <img id="chrtSrveySmmry" src="http://localhost:61048/abc/images/srveysmrydenticom_18.png?9395c75b-8757-4e4a-853a-401f8a9780af" alt="" width='350' height='200'> </td> </tr> </table> <table> <tr> <td valign="top" style="font-size: 11px; width: 100%; text-align: justify;"> <span id="lblSummryReslt">You reported a total patient population of 46, which means that almost 22 suffer from periodontal disease. <br /> Second, the quality and type of your equipment will allow you to practice more effectively, quicker and with better patient outcomes. <br /> Finally, the most successful practices take every opportunity to educate clients on the importance.</span> </td> </tr> <tr> <td> </td> </tr> </table> <table> <tr> <td align="left" class="rptHeading"> <b>Results</b> </td> </tr> <tr> <td align="left" class="smallHeading"> <b>Performance</b> </td> </tr> <tr> <td valign="top" style="font-size: 11px; width: 100%; text-align: justify;"> <span id="lblPerformance">[Intro paragraph that will be editable by “Admin”]</span> </td> </tr> <tr> <td> </td> </tr> </table> <table cellpadding="0" cellspacing="0"> <tr> <td align="left" valign="top"> <img id="dentIncome" src="http://localhost:61048/abc/images/denticom_18.png?fc6541d8-39c9-470a-8e0c-a5d91f207df7" alt="" width='350' height='200'> <img id="dentFTE" src="http://localhost:61048/abc/images/dentfte_18.png?7c16fe28-e646-486c-aa4f-f289c359e355" alt="" width='350' height='200'> </td> </tr> </table> <table> <tr> <td> <table style="font-size: 10px; width: 100%;" bgcolor="#EBEBEB"> <tr> <td width='240'> <b>Active Clients</b> </td> <td width='120' align='right'> <b>25%</b> </td> <td width='120' align='right'> <b>Median</b> </td> <td width='120' align='right'> <b>75%</b> </td> <td width='120'> </td> </tr> <tr> <td align='right'> <b>All Practices</b> </td> <td align='right'> 1,653 </td> <td align='right'> 2,800 </td> <td align='right'> 4,510 </td> <td> </td> </tr> <tr> <td align='right'> <b>abc</b><br> <span class='smallText'>1.0 or Less</span> </td> <td align='right'> 971 </td> <td align='right'> 1,576 </td> <td align='right'> 2,707 </td> <td> </td> </tr> <tr> <td align='right'> <b>Member Status</b><br> <span class='smallText'>abc</span> </td> <td align='right'> 1,974 </td> <td align='right'> 2,833 </td> <td align='right'> 4,927 </td> <td> </td> </tr> <tr> <td align='right'> <b>Gross Annual Income</b><br> <span class='smallText'><$500,000</span> </td> <td align='right'> 789 </td> <td align='right'> 1,172 </td> <td align='right'> 3,000 </td> <td> </td> </tr> <tr> <td align='right'> <b>Years in Current Location</b><br> <span class='smallText'>10 years or less</span> </td> <td align='right'> 1,250 </td> <td align='right'> 2,429 </td> <td align='right'> 3,743 </td> <td> </td> </tr> <tr> <td> </td> <td align='right'> 15 </td> <td colspan='3' align='center'> 104% of all practices have more </td> </tr> </table> </td> </tr> <tr> <td> <table style="font-size: 10px; width: 100%;" bgcolor="#EBEBEB"> <tr> <td width='240'> <b>Active Clients per FTE</b> </td> <td width='120' align='right'> <b>25%</b> </td> <td width='120' align='right'> <b>Median</b> </td> <td width='120' align='right'> <b>75%</b> </td> <td width='120'> </td> </tr> <tr> <td align='right'> <b>All Practices</b> </td> <td align='right'> 778 </td> <td align='right'> 1,070 </td> <td align='right'> 1,900 </td> <td> </td> </tr> <tr> <td align='right'> <b>abc</b><br> <span class='smallText'>1.0 or Less</span> </td> <td align='right'> 956 </td> <td align='right'> 1,576 </td> <td align='right'> 2,800 </td> <td> </td> </tr> <tr> <td align='right'> <b>Member Status</b><br> <span class='smallText'>abc</span> </td> <td align='right'> 756 </td> <td align='right'> 1,038 </td> <td align='right'> 1,750 </td> <td> </td> </tr> <tr> <td align='right'> <b>Gross Annual Income</b><br> <span class='smallText'><$500,000</span> </td> <td align='right'> 700 </td> <td align='right'> 1,038 </td> <td align='right'> 2,500 </td> <td> </td> </tr> <tr> <td align='right'> <b>Years in Current Location</b><br> <span class='smallText'>10 years or less</span> </td> <td align='right'> 790 </td> <td align='right'> 1,070 </td> <td align='right'> 1,576 </td> <td> </td> </tr> <tr> <td> </td> <td align='right'> 1 </td> <td colspan='3' align='center'> 110% of all practices have more </td> </tr> </table> </td> </tr> <tr> <td> <table style="font-size: 10px; width: 100%;" bgcolor="#EBEBEB"> <tr> <td width='240'> <b>New Clients</b> </td> <td width='120' align='right'> <b>25%</b> </td> <td width='120' align='right'> <b>Median</b> </td> <td width='120' align='right'> <b>75%</b> </td> <td width='120'> </td> </tr> <tr> <td align='right'> <b>All Practices</b> </td> <td align='right'> 307 </td> <td align='right'> 492 </td> <td align='right'> 750 </td> <td> </td> </tr> <tr> <td align='right'> <b>abc</b><br> <span class='smallText'>1.0 or Less</span> </td> <td align='right'> 223 </td> <td align='right'> 324 </td> <td align='right'> 496 </td> <td> </td> </tr> <tr> <td align='right'> <b>Member Status</b><br> <span class='smallText'>abc</span> </td> <td align='right'> 340 </td> <td align='right'> 543 </td> <td align='right'> 813 </td> <td> </td> </tr> <tr> <td align='right'> <b>Gross Annual Income</b><br> <span class='smallText'><$500,000</span> </td> <td align='right'> 148 </td> <td align='right'> 232 </td> <td align='right'> 324 </td> <td> </td> </tr> <tr> <td align='right'> <b>Years in Current Location</b><br> <span class='smallText'>10 years or less</span> </td> <td align='right'> 283 </td> <td align='right'> 548 </td> <td align='right'> 791 </td> <td> </td> </tr> <tr> <td> </td> <td align='right'> 95 </td> <td colspan='3' align='center'> 99% of all practices have more </td> </tr> </table> </td> </tr> <tr> <td> <table style="font-size: 10px; width: 100%;" bgcolor="#EBEBEB"> <tr> <td width='240'> <b>New Clients per FTE</b> </td> <td width='120' align='right'> <b>25%</b> </td> <td width='120' align='right'> <b>Median</b> </td> <td width='120' align='right'> <b>75%</b> </td> <td width='120'> </td> </tr> <tr> <td align='right'> <b>All Practices</b> </td> <td align='right'> 145 </td> <td align='right'> 218 </td> <td align='right'> 314 </td> <td> </td> </tr> <tr> <td align='right'> <b>abc</b><br> <span class='smallText'>1.0 or Less</span> </td> <td align='right'> 220 </td> <td align='right'> 319 </td> <td align='right'> 489 </td> <td> </td> </tr> <tr> <td align='right'> <b>Member Status</b><br> <span class='smallText'>abc</span> </td> <td align='right'> 147 </td> <td align='right'> 217 </td> <td align='right'> 310 </td> <td> </td> </tr> <tr> <td align='right'> <b>Gross Annual Income</b><br> <span class='smallText'><$500,000</span> </td> <td align='right'> 129 </td> <td align='right'> 219 </td> <td align='right'> 310 </td> <td> </td> </tr> <tr> <td align='right'> <b>Years in Current Location</b><br> <span class='smallText'>10 years or less</span> </td> <td align='right'> 162 </td> <td align='right'> 235 </td> <td align='right'> 436 </td> <td> </td> </tr> <tr> <td> </td> <td align='right'> 8 </td> <td colspan='3' align='center'> 116% of all practices have more </td> </tr> </table> </td> </tr> <tr> <td> <table style="font-size: 10px; width: 100%;" bgcolor="#EBEBEB"> <tr> <td width='240'> <b>Total Practice Income</b> </td> <td width='120' align='right'> <b>25%</b> </td> <td width='120' align='right'> <b>Median</b> </td> <td width='120' align='right'> <b>75%</b> </td> <td width='120'> </td> </tr> <tr> <td align='right'> <b>All Practices</b> </td> <td align='right'> $695,955 </td> <td align='right'> $1,082,852 </td> <td align='right'> $1,720,189 </td> <td> </td> </tr> <tr> <td align='right'> <b>abc</b><br> <span class='smallText'>1.0 or Less</span> </td> <td align='right'> $334,573 </td> <td align='right'> $514,859 </td> <td align='right'> $799,886 </td> <td> </td> </tr> <tr> <td align='right'> <b>Member Status</b><br> <span class='smallText'>abc</span> </td> <td align='right'> $896,791 </td> <td align='right'> $1,283,768 </td> <td align='right'> $2,005,117 </td> <td> </td> </tr> <tr> <td align='right'> <b>Gross Annual Income</b><br> <span class='smallText'><$500,000</span> </td> <td align='right'> $209,625 </td> <td align='right'> $334,843 </td> <td align='right'> $431,120 </td> <td> </td> </tr> <tr> <td align='right'> <b>Years in Current Location</b><br> <span class='smallText'>10 years or less</span> </td> <td align='right'> $520,479 </td> <td align='right'> $906,396 </td> <td align='right'> $1,554,360 </td> <td> </td> </tr> <tr> <td> </td> <td align='right'> $15 </td> <td colspan='3' align='center'> 87% of practices your size have more </td> </tr> </table> </td> </tr> <tr> <td> <table style="font-size: 10px; width: 100%;" bgcolor="#EBEBEB"> <tr> <td width='240'> <b>Income per FTE</b> </td> <td width='120' align='right'> <b>25%</b> </td> <td width='120' align='right'> <b>Median</b> </td> <td width='120' align='right'> <b>75%</b> </td> <td width='120'> </td> </tr> <tr> <td align='right'> <b>All Practices</b> </td> <td align='right'> $385,863 </td> <td align='right'> $479,780 </td> <td align='right'> $598,915 </td> <td> </td> </tr> <tr> <td align='right'> <b>abc</b><br> <span class='smallText'>1.0 or Less</span> </td> <td align='right'> $329,242 </td> <td align='right'> $504,998 </td> <td align='right'> $732,690 </td> <td> </td> </tr> <tr> <td align='right'> <b>Member Status</b><br> <span class='smallText'>abc</span> </td> <td align='right'> $401,239 </td> <td align='right'> $501,874 </td> <td align='right'> $627,011 </td> <td> </td> </tr> <tr> <td align='right'> <b>Gross Annual Income</b><br> <span class='smallText'><$500,000</span> </td> <td align='right'> $168,354 </td> <td align='right'> $287,102 </td> <td align='right'> $386,539 </td> <td> </td> </tr> <tr> <td align='right'> <b>Years in Current Location</b><br> <span class='smallText'>10 years or less</span> </td> <td align='right'> $311,971 </td> <td align='right'> $463,312 </td> <td align='right'> $571,257 </td> <td> </td> </tr> <tr> <td> </td> <td align='right'> $1 </td> <td colspan='3' align='center'> 166% of all practices have more </td> </tr> </table> </td> </tr> <tr> <td> <table style="font-size: 10px; width: 100%;" bgcolor="#EBEBEB"> <tr> <td width='240'> <b> Total Income</b> </td> <td width='120' align='right'> <b>25%</b> </td> <td width='120' align='right'> <b>Median</b> </td> <td width='120' align='right'> <b>75%</b> </td> <td width='120'> </td> </tr> <tr> <td align='right'> <b>All Practices</b> </td> <td align='right'> 1% </td> <td align='right'> 3% </td> <td align='right'> 4% </td> <td> </td> </tr> <tr> <td align='right'> <b>abc</b><br> <span class='smallText'>1.0 or Less</span> </td> <td align='right'> 1% </td> <td align='right'> 2% </td> <td align='right'> 4% </td> <td> </td> </tr> <tr> <td align='right'> <b>Member Status</b><br> <span class='smallText'>abc</span> </td> <td align='right'> 2% </td> <td align='right'> 3% </td> <td align='right'> 4% </td> <td> </td> </tr> <tr> <td align='right'> <b>Gross Annual Income</b><br> <span class='smallText'><$500,000</span> </td> <td align='right'> 1% </td> <td align='right'> 2% </td> <td align='right'> 4% </td> <td> </td> </tr> <tr> <td align='right'> <b>Years in Current Location</b><br> <span class='smallText'>10 years or less</span> </td> <td align='right'> 1% </td> <td align='right'> 3% </td> <td align='right'> 4% </td> <td> </td> </tr> <tr> <td> </td> <td align='right'> 120% </td> <td colspan='3' align='center'> You have more than 2221% of all practices </td> </tr> </table> </td> </tr> <tr> <td> </td> </tr> </table> <table> <tr> <td> </td> </tr> <tr> <td align="left" class="smallHeading"> <b>Fees</b> </td> </tr> <tr> <td valign="top" style="font-size: 11px; width: 100%; text-align: justify;"> <span id="lblFee">Pricing is a very sensitive topic with many veterinary practices. <br /> Many practices use an annual “community survey” or “secret shopper” approach to </span> </td> </tr> </table> <table> <tr> <td align="left" valign="top"> <div id="pnlDentalRadiologicalFees"> <img id="ctl02" src="http://localhost:61048/abc/images/dental_18.png?41e74548-9789-4f38-9d69-24c046db500a" alt="" width='350' height='200'></div> </td> </tr> </table> <table> <tr> <td valign="top" style="font-size: 11px; width: 100%; text-align: justify;"> <span id="lblSurgicalFee">In valuing your time appropriately</span> </td> </tr> </table> <table> <tr> <td align="left" valign="top"> <div id="pnlSurgeryFees" style="padding-left: 60px;"> <img id="ctl03" src="http://localhost:61048/abc/images/surgical_18.png?a975911f-cb3d-4328-95f0-30a4a9daf343" alt="" width='350' height='200'></div> </td> </tr> </table> </div> below is C# Code private void ExportPDF() { using (MemoryStream mstream = new MemoryStream()) { StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); //Read the content from panel pnlPDF.RenderControl(hw); //Change the image virtual path to absolute path string htmlString = getImage(sw.ToString()); //start the html with p tag //if (!htmlString.ToLower().StartsWith("<p>")) // htmlString = "<p>" + htmlString + "</p>"; //removing the extra space htmlString = htmlString.Replace("\r", string.Empty).Replace("\n", string.Empty).Replace("\t", string.Empty).Replace(" ", ""); //replacing the css classes with style attributes htmlString = htmlString.Replace("class=test", "style=font-size:10px;width:100%;") .Replace("class=text", "style=font-size:11px;width:100%;text-align:justify;") .Replace("class=PerfrmncTbl", "style=font-size:10px;width:100%; bgcolor=#EBEBEB") .Replace("class=caseStudy2", "style=font-size:10px;width:100%;"); //.Replace("class=smallHeading", "style=font-size:10px;width:100%;color:Red;"); StringReader sr = new StringReader(htmlString); //Create pdf document Document pdfDoc = new Document(PageSize.A4, 20f, 20f, 20f, 20f); //Set deault page resolution to 75% PdfDestination pdfDest = new PdfDestination(PdfDestination.STRING, 0, 0, 0.80f); HTMLWorker htmlparser = new HTMLWorker(pdfDoc); PdfWriter PDFWriter = PdfWriter.GetInstance(pdfDoc, Response.OutputStream); pdfDoc.Open(); try { //Set the pdf action PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, PDFWriter); //htmlparser.StartDocument(); //htmlparser.SetInsidePRE(true); htmlparser.Parse(sr); PDFWriter.SetOpenAction(action); //htmlparser.EndDocument(); pdfDoc.Close(); } catch (Exception ex) { throw ex; } string s = DateTime.Now.ToFileTime() + ".pdf"; //Download the generated pdf Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=" + s); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Write(pdfDoc); Response.End(); } } public string getImage(string input) { if (input == null) return string.Empty; string tempInput = input; string pattern = @"<img(.|\n)+?>"; string src = string.Empty; string style = string.Empty; HttpContext context = HttpContext.Current; //Change the relative URL's to absolute URL's for an image, if any in the HTML code. foreach (Match m in Regex.Matches(input, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.RightToLeft)) { if (m.Success) { string tempM = m.Value; string pattern1 = "src=[\'|\"](.+?)[\'|\"]"; string pattern2 = "style[^>]*"; Regex reImg = new Regex(pattern1, RegexOptions.IgnoreCase | RegexOptions.Multiline); Match mImg = reImg.Match(m.Value); Regex restyle = new Regex(pattern2, RegexOptions.IgnoreCase | RegexOptions.Multiline); Match mstyle = restyle.Match(m.Value); if (mImg.Success) { src = mImg.Value.ToLower().Replace("src=", "").Replace("\"", ""); if (src.ToLower().Contains("http://") == false) { style = " width='350' height='200' "; //Insert new URL in img tag src = "src=\"" + context.Request.Url.Scheme + "://" + context.Request.Url.Authority + src + "\""; try { tempM = tempM.Remove(mImg.Index, mImg.Length); tempM = tempM.Insert(mImg.Index, src); //Inserting height and width to img tag //tempM = tempM.Remove(mstyle.Index, mstyle.Length); //tempM = tempM.Insert(mstyle.Index, style); if (mstyle.Success) { tempM = tempM.Replace(mstyle.ToString(), style); } //insert new url img tag in whole html code tempInput = tempInput.Remove(m.Index, m.Length); tempInput = tempInput.Insert(m.Index, tempM); } catch (Exception ex) { } } } } } return tempInput; } i am getting error on htmlparser.Parse(sr); please tell how can solve this Thanks in advance Salil ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions iText(R) is a registered trademark of 1T3XT BVBA. Many questions posted to this list can (and will) be answered with a reference to the iText book: http://www.itextpdf.com/book/ Please check the keywords list before you ask for examples: http://itextpdf.com/themes/keywords.php
