C J'utilise iText PDF pour générer un fichier PDF qui contient une table qui devrait être établi comme suit:Problèmes avec la version 7 de iText PDF pour #
------------------------------------------------
| HEADER |
------------------------------------------------
| some data goes here | more data here |
------------------------------------------------
| Col 1 | Col 2 | Col 3 | Col 4 | Col 5 | Col 6 |
------------------------------------------------
| 1 | SDF wer qwerwq | weqr | WERQW |
------------------------------------------------
| | | | |
| | | | |
| | | | |
| | | | |
------------------------------------------------
| footer information |
------------------------------------------------
mais la table est en cours d'élaboration comme suit:
J'ai essayé suivant les exemples, mais ils sont écrits en Java, et le modèle objet C# semble être légèrement différent. Les lignes ci-dessous la ligne qui a une valeur « Col 1 » de 1 sont répartis sur plusieurs colonnes 2, 3 et 4.
Points à noter:
- Pour la cellule d'en-tête, je suis en train de l'alignement horizontal en appelant cell.SetHorizontalAlignment (HorizontalAlignment.CENTER)
- je dois définir la couleur d'une partie du texte à être rouge
- J'utilise la méthode table.AddCell ajouter la cellule
- Je suis en train de la frontière de la table (selon la documentation c'est la cellule par défaut) à Bord er.NO_BORDER.
- Ceci est pour une application Web écrite en C#
- J'ai téléchargé la dernière version de iText (version 7.0.1)
- J'ai créé un CellRender personnalisé, mais qui semble avoir aucun effet.
- À l'origine j'utilisais iText 5 mais j'avais besoin d'un plus grand contrôle sur le rendu de la table car j'avais besoin de savoir jusqu'où la page que nous avons atteinte.
Voici le code que j'utilise pour créer la cellule:
PdfFont cellFont = font; if ((fontStyle & FONT_STYLE_BOLD) == FONT_STYLE_BOLD && (fontStyle & FONT_STYLE_ITALIC) == FONT_STYLE_ITALIC) { cellFont = fontBoldItalic; } else if ((fontStyle & FONT_STYLE_BOLD) == FONT_STYLE_BOLD) { cellFont = fontBold; } else if ((fontStyle & FONT_STYLE_ITALIC) == FONT_STYLE_ITALIC) { cellFont = fontItalic; } Color fontColor = Color.BLACK; if ((fontStyle & FONT_STYLE_RED) == FONT_STYLE_RED) { fontColor = Color.RED; } Text text = new Text(content); text.SetFont(cellFont); text.SetFontColor(fontColor); text.SetFontSize(fontSize); if ((fontStyle & FONT_STYLE_UNDERLINE) == FONT_STYLE_UNDERLINE) { text.SetUnderline(); } Cell cell = new Cell(rowspan, colspan); cell.Add(new Paragraph(text)); //cell.SetNextRenderer(new CellBorders(cell, borders)); return cell;
Voici comment la table est créée et la table est ajoutée au document à la fin de la méthode Web:
Table table = new Table(6);
table.SetWidthPercent(100);
table.SetPadding(3);
table.SetSpacingRatio(1);
table.SetBorder(Border.NO_BORDER);
Pour la cellule d'en-tête, avez-vous essayé de placer l'alignement horizontal du texte ou le paragraphe à 'TextAlignment. CENTER' (méthode 'SetHorizontalAlignment')? –
En ce qui concerne les bordures, vous pouvez spécifier des propriétés de bordure sur les cellules elles-mêmes. ('cell # SetBorder/SetBorderLeft/...'). –
Erreur mineure dans le premier commentaire, la méthode à utiliser est 'SetTextAlignment()' –