2010-10-14 7 views
1

J'essaye de créer une table simple avec iTextSharp, donc avec C#. L'objectif est une table comme celui-ci:Rowspan avec iTextSharp ne fonctionne pas correctement

Le problème est que si je demande le rowspan comme 2 sur la cellule A, iTextSharp ne rend pas la cellule rowspanned, cela signifie que la cellule ont la même hauteur de la cellule B. Voici le code:

PdfPTable corporateTable = new PdfPTable(2); 
    corporateTable.HeaderRows = 1; 
    corporateTable.TotalWidth = pdfWidth - 50; 

    PdfPCell vCell = new PdfPCell(); 
    vCell.Border = Rectangle.BOX; 
    vCell.Rowspan = 2; 
    vCell.Phrase = new Phrase("A", new Font(fontLh, 7f, 1, BaseColor.BLACK)); 
    corporateTable.CompleteRow(); 
    corporateTable.AddCell(vCell); 


    PdfPCell vCellx = new PdfPCell(); 
    vCellx.Phrase = new Phrase("B", new Font(fontLh, 7f, 1, BaseColor.BLACK)); 
    vCellx.Colspan = 3; 
    corporateTable.AddCell(vCellx); 

    PdfPCell vCell1 = new PdfPCell(); 
    vCell1.Phrase = new Phrase("C", new Font(fontValue, 7f, 0, BaseColor.BLACK)); 
    corporateTable.AddCell(vCell1); 

    corporateTable.WriteSelectedRows(0, -1, 100f, 100f, writer.DirectContent); 
    document.Close(); 

Qu'est-ce qui ne va pas? J'utilise la dernière version de la DLL.

Répondre

2

Eh bien la réponse de base est: ça marche! Si vous ajoutez deux autres cellules, vous verrez qu'une cellule (celle en dessous de A) n'est pas remplie.

Mais ce n'est pas ce que vous attendez (et je ne l'ai pas fait). Pour achive ce que vous voulez utiliser des tables imbriquées, cela signifie:

  • créer une table avec deux cols
  • insert cellule A dans la table
  • créer cellule 2
  • créer une plus table avec 1 col
    • cellule insert B dans le tableau 2
    • insert cellule c dans le tableau 2
  • Insérer la table 2 dans la cellule 2

Pour rechercher itext rowspan, vous trouverez plusieurs exemples entièrement typés.

HTH

Mario

+0

Ok, mais cela signifie que iTextSharp fonctionne différemment de html, donc je ne peux pas le faire sans imbriquer les tables? –

+0

C'est ce que j'ai trouvé, oui. J'ai joué aussi avec votre code, et le rowspan fonctionne, juste l'alignement n'est pas justifié comme étant entre les lignes. Je peux vérifier mon iText dans le livre d'action somewhen tonite (MESZ). salutations –

+0

BTW: si vous trouvez la réponse utile, un upvote serait bien :-) –

0

Je pense que cela va fonctionner. Essayez de supprimer les lignes de code suivantes:

corporateTable.CompleteRow(); 
... 
vCellx.Colspan = 3;