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("&nbsp;", "");
//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

Reply via email to