itextTabellen: iText 5 versus iText 7


Opmerkingen

De iText 5- PdfPTable en PdfPCell zijn gekozen omdat we al klassen hadden met de naam Table en Cell om PdfPTable en PdfPCell op het hoogste programmeerniveau te maken. Er was ook een klasse met de naam PdfTable die intern door iText kon worden gebruikt. Die klassen hadden veel gebreken en ze waren verouderd ten gunste van PdfPTable en PdfPCell . Ze zijn lang geleden verwijderd.

In de loop der jaren hebben PdfPTable en PdfPCell ook wat kritiek gekregen van gebruikers. Bijvoorbeeld: gebruikers begrepen het verschil niet tussen tekstmodus en samengestelde modus.

De tekstmodus wordt gebruikt wanneer u een PdfPCell als volgt maakt:

cell = new PdfPCell(new Phrase("Cell with rowspan 2"));

In dit geval definieert u eigenschappen zoals de horizontale uitlijning op het niveau van de PdfPCell .

De composietmodus begint wanneer u de methode addElement() gebruikt:

cell = new PdfPCell();
cell.addElement(new Phrase("Cell 1.2"));

In dit geval worden sommige eigenschappen die op het niveau van de PdfPCell (zoals de horizontale uitlijning) genegeerd. De horizontale uitlijning moet worden gedefinieerd op het niveau van de elementen die aan de cel worden toegevoegd. Bijvoorbeeld: als u een cel wilt maken waarin verschillende alinea's een verschillende horizontale uitlijning moeten hebben, schakelt u naar de samengestelde modus.

Als u naar de schermafbeelding van de tabel kijkt die met het iText 5-voorbeeld is gemaakt, zult u merken dat de cellen met inhoud Cel 1.1 (toegevoegd in tekstmodus) en Cel 1.2 (toegevoegd in samengestelde modus) heel verschillend zijn uitgelijnd.

Als antwoord op de kritiek op de vreemde afstemming, hebben we methoden geïntroduceerd om informatie over op en neer te gebruiken. We gebruiken deze methoden voor de cellen met inhoud Cel 2.1 (toegevoegd in tekstmodus) en Cel 2.2 (toegevoegd in samengestelde modus). We hebben ook een opvulling van 5 voor deze cellen geïntroduceerd.

Nu is het resultaat veel beter.

Wat we hebben opgelost in iText 7:

Aangezien we iText 7 helemaal opnieuw hebben gemaakt, hadden we geen oudere klassen met namen die we niet opnieuw konden gebruiken. We hebben een nieuwe Table en een nieuwe Cell geïntroduceerd.

Er is geen tekstmodus en geen samengestelde modus meer. Een Cell wordt gemaakt zonder parameters of met parameters die de rowspan en de colspan definiëren. Alle inhoud wordt op dezelfde manier toegevoegd: met de methode add() .

Onze klanten vroegen ook om een middel om een marge en een opvulling te onderscheiden. In het iText 7-voorbeeld hebben we een grijze achtergrond toegevoegd om het verschil te tonen. In de cel met inhoud Cel 2.1 definiëren we een marge van 5 gebruikerseenheden. De standaard opvulling is 2. In de cel met inhoud Cel 2.2 definiëren we een opvulling van 5 gebruikerseenheden, de standaardmarge in 0.

Zoals u aan de schermafbeeldingen kunt zien, worden de cellen heel mooi weergegeven. We hoefden geen methoden te gebruiken om de ascender of de descender in te stellen. Het standaardgedrag komt veel dichter in de buurt van het gedrag dat een ontwikkelaar zou verwachten.

Wilt u meer weten over tabellen en cellen in iText 7?

Lees AbstractElement-objecten toevoegen (deel 2) in hoofdstuk 5 in de tutorial iText 7: Building Blocks . Ontvang het gratis ebook!

Tabellen: iText 5 versus iText 7 Gerelateerde voorbeelden