ItextSharp Erreur en essayant de l'analyser html pour la conversion en pdf

J'ai été en utilisant le ItextSharp module pour convertir la liste figure ci-dessous le code html dans une page pdf.

        <div style="font-size: 18pt; font-weight: bold;">
mma<br>mmar</div><br> <br>
<div style="font-size: 14pt;">Click to View Pricing
</div>
<br>
<div>
<table>
<tr><td> <a href="http://www.mma.com/fci" style="color: Blue; font-size: 10pt; text-decoration: underline;"> FCI</a>:</td> 
<td><a href="http://www.mma.com/access/?pn=78211-014" style="color: Blue; font-size: 10pt; text-decoration: underline;"> 78211-014</a></td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-009" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-009</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-006" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-006</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-007" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-007</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-003" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-003</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-005" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-005</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-008"
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-008</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-004" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-004</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-012" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-012</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-007LF" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-007LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-015LF" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-015LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-003LF"
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-003LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-009LF" 
style="color: Blue; font-size: 10pt; text-decoration:
underline;">78211-009LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-005LF" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-005LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-010LF" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-010LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-006LF"
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-006LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-014LF"
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-014LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-004LF" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-004LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-012LF"
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-012LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-008LF"
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-008LF</td></tr><tr><td></td> <td>
<a href="http://www.mma.com/access/?pn=78211-011LF" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-011LF</td></tr><tr><td></td> <td><a href="http://www.mma.com/access/?pn=78211-013LF" 
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-013LF</td></tr><tr><td></td> <td><a href="http://www.mma.com/access/?pn=78211-010" style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-010</td></tr><tr><td></td>
<td><a href="http://www.mma.com/access/?pn=78211-015"
style="color: Blue; font-size: 10pt; text-decoration: underline;">78211-015</td></tr><tr><td> 
<a href="http://www.mma.com/souriau" 
style="color: Blue; font-size: 10pt; text-decoration: underline;"> Souriau</a>:</td>
<td><a href="http://www.mma.com/access/?pn=24JR124-3" style="color: Blue; font-size: 10pt; text-decoration: underline;"> 24JR124-3</a></td></tr></table></div>

De code C# pour générer le code html ci-dessus :

 var html = new StringBuilder(@"<div style=""font-size: 18pt; font-weight: bold;"">Authorized Distributor</div><br> <br><div style=""font-size: 14pt;"">Click to View Pricing, Inventory, Delivery & Lifecycle Information:</div><br>");
List<MfrBrandView> mfrBrands = MfrBrandView.Load(fileId);
var uniquesuppliers = mfrBrands.GroupBy(t => new {t.Manufacturer,t.SupplierVirtualDirectory}).Select(g => g.First());
html.Append("<div><table>");
foreach (var uniquesupplier in uniquesuppliers)
{
var mfrPartNums =
mfrBrands.Where(t => t.ManufacturerId == uniquesupplier.ManufacturerId).Select(
t => t.ManufacturerPartNumber).ToList();
html.AppendFormat(@"<tr><td> <a href=""http://www.mma.com/{0}"" style=""color: Blue; font-size: 10pt; text-decoration: underline;""> {1}</a>:</td> <td><a href=""http://www.mma.com/access/?pn={2}"" style=""color: Blue; font-size: 10pt; text-decoration: underline;""> {2}</a></td></tr>", uniquesupplier.SupplierVirtualDirectory, uniquesupplier.MouserizationLabel, mfrPartNums[0]);
for (int i = 1; i < mfrPartNums.Count(); i++)
{
html.AppendFormat(
@"<tr><td></td> <td><a href=""http://www.mma.com/access/?pn={0}"" style=""color: Blue; font-size: 10pt; text-decoration: underline;"">{0}</td></tr>",
mfrPartNums[i]);
}
}
html.Append("</table></div>");
return html.ToString();

Code pour générer la page après le html est formé:

PdfWriter writer = null;
PdfDocument doc = null;
//PdfReader reader = new PdfReader(content);
//reader.Info["Title"]
try
{
doc = new PdfDocument();
doc.SetPageSize(PageSize.LETTER);
writer = PdfWriter.GetInstance(doc, content);
writer.CloseStream = false;
doc.Open();
doc.NewPage();
foreach (IElement element in iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new StringReader(html), null))
{
doc.Add(element);
}
}

ci-dessous est là que j'obtiens une exception en disant "Impossible de convertir l'objet de type 'iTextSharp.texte.html.simpleparser.CellWrapper' de type 'iTextSharp.texte.Paragraphe"."
iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new StringReader(html), null)

Il ya quelque chose de mal avec le html, je suis en train de l'analyser? Est-il une meilleure manière de faire ceci?
Merci beaucoup d'avance pour votre aide. Il est très apprécié.

Pouvez-vous nous montrer le code C#? Vous essayez de faire une Cellule d'un Paragraphe. D'un niveau trop élevé.
Eh bien..je suppose que c'est la ItextSharp Analyseur qui est d'essayer de le faire. Je ne sais pas si certains éléments html ne sont pas autorisés, tout en essayant de convertir html en PDF à l'aide de Itextsharp
Itextsharp ne marche pas comme ça, j'ai mis mon <a> balises à l'intérieur de la <td> balises. Ressemble qui est la question.
ça fonctionne maintenant?
oui....mais pas de la manière dont j'ai exactement le concevait.J'ai dû mettre tous les <a> tag dans un <div>. Et a dû faire quelques compromis en termes de la façon dont je voulais que ma mise en forme de la page, parce que je ne pouvais pas régler tous les <a> balises dans un tableau tel que requis.

OriginalL'auteur karry | 2012-08-24