iText PDFtable eksempel
I det foregående eksempel demonstrerede vi brugen af PDFStamper-klassen i IText-biblioteket. I dette eksempel vil vi demonstrere, hvordan vi kan bruge PDFTable
at forbedre designet af PDF-dokumentet og tilpasse dokumentlayoutet med en tabelstruktur.
Lad os starte med at sætte projektet op. Vi laver et simpelt Maven-projekt i Eclipse. Erstat indholdet af pom.xml
med nedenstående givne indhold:
1. Projektopsætning
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>PDFTableExample</groupId> <artifactId>PDFTableExample</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.6</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.52</version> </dependency> </dependencies> </project>
Dette vil indlæse den nødvendige Itext
biblioteker og dets tilsvarende afhængigheder i projektet. Nu hvor projektet er sat op, lad os starte med demonstrationen og den faktiske kodeskrivning.
Her er klassen, der vil oprette en ny PdfTable
i PDF-dokumentet.
CreatePDFTable.java
package com.jcg.examples; import java.io.FileNotFoundException; import java.io.FileOutputStream; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; public class CreatePDFTable { public static void main(String[] args) { Document document = new Document(); try { @SuppressWarnings("unused") PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("CreateTable.pdf")); document.open(); PdfPTable pdfPTable =new PdfPTable(2); PdfPCell pdfCell1 = new PdfPCell(new Phrase("Cell-1")); PdfPCell pdfCell2 = new PdfPCell(new Phrase("Cell-12")); pdfPTable.addCell(pdfCell1); pdfPTable.addCell(pdfCell2); PdfPCell pdfCell3 = new PdfPCell(new Phrase("Cell-21")); pdfCell3.setColspan(2); pdfCell3.setBackgroundColor(BaseColor.DARK_GRAY); pdfCell3.setBorderColor(BaseColor.RED); pdfCell3.setRotation(90); pdfPTable.addCell(pdfCell3); pdfPTable.setWidthPercentage(70); document.add(pdfPTable); document.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } document.open(); } }
Vi starter med at oprette en instans af com.itextpdf.text.Document
. Vi videregiver denne instans til PDFWriter
sammen med stien og navnet på det dokument, der skal oprettes. Dernæst opretter vi en forekomst af com.itextpdf.text.pdf.PdfPTable
. Denne tabel kan have flere celler, hvor hver celle har sine egne egenskaber, som kan administreres på et elementært niveau.
Vi har brugt PdfPTable#setWidthPercentage
for at indstille tabelbredden i forhold til dokumentet. Celler oprettes ved at oprette forekomster af com.itextpdf.text.pdf.PdfPCell
. Vi kan indstille cellekantfarven ved hjælp af PdfPCell#setBorderColor
. På samme måde kan vi indstille baggrundsfarven ved hjælp af PdfPCell#setBackgroundColor
.
Bredden af cellerne kan justeres ved hjælp af setWidths
metode. Vi kan øge størrelsen af en colspan
ved hjælp af setColspan
metode.
Teksten i cellen kan også roteres om nødvendigt ved at bruge setRotation
metode. På samme måde kan vi indstille cellepolstring, cellejustering, celleindrykning osv.
Når celleforekomsten er klar, kan den vedhæftes til den overordnede tabel. Denne tabel tilføjes derefter til dokumentet. Når dokumentet er lukket, skylles tabellen til PDF.
Vi kan oprette en indlejret tabel ved at oprette en celle i en tabel og tilføje en ny tabel i cellen.
Her er hvordan PDFPTable
ser i et dokument, når ovenstående klasse køres:
Fig. 1:PDF-tabel i et dokument
2. Download kildekoden
I dette eksempel demonstrerede vi, hvordan vi kan bruge Itext PDFPTable-klassen til at forbedre designet og præcisionen af PDF-dokumentet.