Itextsharp PDFPTable comment faire une bordure autour de l'ensemble de la table
Je suis en train de construire une table via une base de données dans Itextsharp avec PDFPTable, et les exigences qu'aucune des lignes ou des cellules dans le tableau en haut ou en bas de la bordure inférieure, mais les côtés gauche et droit de chaque cellule ont une bordure noire (en d'autres termes, chaque colonne a une à gauche une à droite), et le bas de la table doit être fermé, avec une bordure noire, qui est l'endroit où mon problème se situe.
Ce que je fais est la définition de la frontière à 0, alors affecter manuellement des frontières, afin que je ne reçois que les bords droit et gauche de chaque cellule, comme on le voit ci-dessous un exemple d'une colonne "Quantité" généré:
cell = new PdfPCell(new Phrase(Qty.value, subheaderFont));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.VerticalAlignment = Element.ALIGN_MIDDLE;
cell.BackgroundColor = new iTextSharp.text.BaseColor(220, 220, 220);
cell.Border = 0;
cell.BorderColorLeft = BaseColor.BLACK;
cell.BorderWidthLeft = .5f;
cell.BorderColorRight = BaseColor.BLACK;
cell.BorderWidthRight = .5f;
table.AddCell(cell);
La question est bien évidemment je n'ai pas de moyen de détection de la dernière ligne pour ajouter de la frontière-bas, mais j'imagine qu'il doit être un moyen de contrôler la frontière de la "table" lui-même, ou suis-je en prenant le faux approche?
OriginalL'auteur Rekson | 2014-07-02
Vous devez vous connecter pour publier un commentaire.
Que vous l'avez trouvé,
PdfPTable
n'a pas de frontières, probablement parce que les PDF n'ont pas de tables dans la première place. Il a probablement fait plus de sens de mettre des frontières sur laPdfPCell
directement (même si les fichiers Pdf ne prennent pas en charge ces). Un tableau n'est qu'une collection de cellules, de toute façon, donc les laisser s'en occuper.De toute façon, la solution est de définir la
TableEvent
sur votre instance de laPdfPTable
classe. Pour ce faire, vous aurez besoin d'une implémentation personnalisée de laIPdfPTableEvent
interface. Le code ci-dessous devrait généralement faire pour vous (voir les notes au bas pour "généralement")Son utilisation est très facile, il suffit de le lier à une instance de la propriété:
Ci-dessus j'ai bien dit "en général", il doit travailler. Si vous avez de la table des en-têtes ou pieds de page, cependant, vous allez avoir besoin d'en tenir compte, aussi. Cela ne devrait pas être trop dur, mais vous aurez besoin d'ajuster la
y
valeurs comptables pourtable.HeaderRows
ettable.FooterRows
.OriginalL'auteur Chris Haas
J'ai eu le même problème trouvé la solution suivante.
De "iText Dans l'Action de la Deuxième Édition"
PdfPCell s'étend Rectangle, héritant d'une pléthore de méthodes pour changer la façon dont les frontières sont dessinées et les décors sont peints..
La méthode "DisableBorderSide(int Rectangle)" est la façon d'aller sur removeing frontières avec toute autre dimensionnement impliqués.
OriginalL'auteur RGood Solutions
J'ai résolu ce problème en utilisant des tables imbriquées
OriginalL'auteur María Frances Gaska
OriginalL'auteur JIYAUL MUSTAPHA