2017-03-28 5 views
1

L'objet iText Table.getNumberofRows() fn renvoie le nombre de lignes d'une table et fonctionne généralement comme prévu. Si la dernière rangée ne contient qu'un nombre partiel de cellules, elle compte toujours comme une ligne, ce qui est logique. Cependant, s'il ne contient pas cellules, je ne pense pas que ce soit une rangée, donc ça ne devrait pas compter. Malheureusement c'est le cas. Par exemple, lors de la création d'une table, getNumRows() renvoie 1 plutôt que 0. (C'est parce que son constructeur appelle (raisonnablement) un init fn qui prépare une ligne vide.)Comportement de Table.getNumberOfRows()

Maintenant, si vous ajoutez Une ligne complète de cellules à la table, getNumRows() renvoie toujours 1, donc vous ne pouvez pas dire une table vide à partir d'un one-liner valide. Une solution de contournement consiste à appeler startNewRow() après chaque ligne de cellules est ajouté et gérer la conséquence que getNumRows() sera un trop grand. Sur 7.0.2, cependant, cette solution de contournement a commencé à générer un message d'avertissement sur Last row is not completed. Table bottom border may collapse as you do not expect it. Ce n'est pas faux, mais ça a l'air mauvais.

Pourriez-vous mettre à jour iText pour traiter une ligne sans cellules comme aucune ligne?

+0

Bonjour, merci pour votre suggestion. Cela semble raisonnable et il sera considéré. –

+0

Merci, Alexey. J'ai essayé d'utiliser Table.getCell (0,0) pour voir si la première ligne existait ou pas, mais cela lance une exception (plutôt que de retourner null, comme le suggère le docn) sur une nouvelle table. – Vernon

Répondre

1

Vernon.

Je crois que vous pouvez utiliser table.isEmpty() pour vérifier si Table a des enfants (cellules) ou non. Si le résultat est vrai, la ligne existe en effet.

Mais heureusement (merci pour vos suggestions) nous avons corrigé le problème (voir 7.0.3-SNAPSHOT). Maintenant Table aura une liste de lignes vides jusqu'à ce que l'on ajoute une cellule. Donc, le résultat de table.getNumberOfRows() sera correct.

+0

C'était très rapide! Merci beaucoup. Je ne pouvais pas voir isEmpty() dans l'API docn, donc je ne savais pas à ce sujet. – Vernon