¿Alguna vez se ha preguntado cómo las diferentes celdas de una tabla PDF se configuran en varios colores? Bueno, en este artículo veremos cómo podemos configurar el fondo de varias celdas en una tabla PDF usando la biblioteca iText en su lenguaje favorito Java.
Descargando iText
Cree un nuevo proyecto Java Maven y agregue las siguientes dependencias en el archivo pom.xml. Este paso agrega todos los archivos jar necesarios a las dependencias de Maven.
XML
<dependencies> <dependency> <groupId>com.itextpdf</groupId> <artifactId>kernel</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>io</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>layout</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>forms</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>pdfa</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>sign</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>barcodes</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>font-asian</artifactId> <version>7.0.2</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>hyph</artifactId> <version>7.0.2</version> </dependency> </dependencies>
Establecer el fondo de una tabla PDF
Paso 1: Cree un archivo PDF vacío.
- Asigne la ruta del PDF vacío a una variable de string.
- Importe PdfWriter desde el paquete com.itextpdf.kernel.pdf. (PdfWriter nos permite escribir contenido en nuestro archivo PDF)
- PdfWriter acepta una variable de string ya que es un parámetro que representa el destino del PDF.
- Inicialice el objeto PdfWriter pasando la ruta del archivo PDF.
El siguiente código crea un PDF vacío.
String path = "F:/Table.pdf"; PdfWriter pdfWriter = new PdfWriter(path);
Paso 2: Cree un documento PDF que represente el archivo PDF vacío.
- Importe PdfDocument desde el paquete com.itextpdf.kernel.pdf. (PdfDocument se usa para representar el pdf en el código. Este último se puede usar para agregar o modificar varias funciones, como fuentes, imágenes, tablas, etcétera)
- PdfDocument acepta un objeto PdfWriter o PdfReader como su parámetro.
- Inicialice PdfDocument pasando el objeto PdfWriter.
El siguiente código crea un PdfDocument que representa el archivo PDF vacío.
PdfDocument pdfDoc = new PdfDocument(pdfWriter);
Paso 3: Crear un Documento.
- Importar documento desde el paquete com.itextpdf.layout.
- Se crea un objeto Documento para hacer una versión legible del PDF.
- Uno de los constructores de la clase Document acepta el objeto PdfDocument como sus parámetros.
- Inicialice el documento pasando el objeto PdfDocument.
El siguiente código crea un documento.
Document doc = new Document(pdfDoc);
Paso 4: crea una tabla.
- Importar tabla desde el paquete com.itextpdf.layout.element.
- Una tabla se crea por celdas, y cada celda ocupa una unidad de fila y columna.
- El constructor de la tabla acepta el número de columnas como sus parámetros.
- Inicialice el objeto de la tabla pasando el número de columnas como si fuera un parámetro.
El siguiente código crea una tabla.
Table table = new Table(3);
Paso 5: Agregue celdas a la tabla con un fondo favorito usando setBackgroundColor(Color.color, float opacity).
- Importar celda desde el paquete com.itextpdf.layout.element.
- Importe Color desde el paquete com.itextpdf.kernel.color.
- Inicialice el número de celdas que desea agregar a la tabla.
- Agrega texto a las celdas usando add(String text) .
- Establece el color de fondo de las celdas usando setBackgroundColor(Color.color, float opacity).
- Agregue las celdas a la tabla.
El siguiente código crea y agrega celdas a la tabla.
Cell cell = new Cell(); cell.add("Geeks for Geeks"); cell.setBackgroundColor(Color.GREEN, 2); table.add(cell);
Paso 6: agregue la tabla al documento.
- Agregue la tabla creada al documento usando document.add(Table table).
- Cierra el documento usando document.close().
El siguiente código agrega la tabla al documento PDF.
document.add(table); document.close();
El siguiente fragmento de código ilustra cómo funcionan las tablas con antecedentes variados en un escenario técnico.
Java
// Java program to set the background of a PDF table // Importing the necessary classes import com.itextpdf.kernel.color.Color; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Cell; import com.itextpdf.layout.element.Table; import com.itextpdf.layout.property.TextAlignment; // Personal Info Class class PersonalInfo { // Name of each person String name; // Age of each person int age; // Country of origin of each person String origin; // Initializing the PersonalInfo object PersonalInfo(String name, int age, String origin) { this.name = name; this.age = age; this.origin = origin; } } public class TableBackground { public static void main(String[] args) { // Try catch block to catch file Exceptions try { // Path of the PDF file String path = "F:/Table.pdf"; // Creating a PDF writer object PdfWriter writer = new PdfWriter(path); // Creating a PDF Document object PdfDocument pdf = new PdfDocument(writer); // Creating a Document object Document doc = new Document(pdf); // Creating an empty table with three columns Table table = new Table(3); // Initializing three cells which make the first // row of the table Cell c1 = new Cell(); Cell c2 = new Cell(); Cell c3 = new Cell(); // Adding text to the cells c1.add("Name"); c2.add("Age"); c3.add("Origin"); // Setting the background color of each cell c1.setBackgroundColor(Color.GREEN); c2.setBackgroundColor(Color.GREEN); c3.setBackgroundColor(Color.GREEN); // Aligning the text to the center of each cell c1.setTextAlignment(TextAlignment.CENTER); c2.setTextAlignment(TextAlignment.CENTER); c3.setTextAlignment(TextAlignment.CENTER); // Adding the cells to the table table.addCell(c1); table.addCell(c2); table.addCell(c3); // Initializing an array of personal info PersonalInfo[] personalInfo = new PersonalInfo[3]; // Adding data to the personal info array personalInfo[0] = new PersonalInfo("Yuri", 37, "Russian"); personalInfo[1] = new PersonalInfo("Diksha", 18, "Indian"); personalInfo[2] = new PersonalInfo("Sergio", 34, "Italian"); // For loop to iterate over each person for (PersonalInfo pi : personalInfo) { // Initializing three empty cells which // represent the name, gender and origin of // a person // Cell 1 represents name c1 = new Cell(); // Cell 2 represents age c2 = new Cell(); // Cell 3 represents origin c3 = new Cell(); // Checking whether the person is Indian if (pi.origin.equals("Indian")) { // Setting the color of the cells to the // colors of the Indian flag c1.setBackgroundColor(Color.ORANGE, 10); c2.setBackgroundColor(Color.WHITE); c3.setBackgroundColor(Color.GREEN); } // Checking whether the person is Russian else if (pi.origin.equals("Russian")) { // Setting the color of the cells to the // colors of the Russian flag c1.setBackgroundColor(Color.WHITE); c2.setBackgroundColor(Color.BLUE); c3.setBackgroundColor(Color.RED); } // Checking whether the person is Italian else if (pi.origin.equals("Italian")) { // Setting the color of the cells to the // colors of the Italian flag c1.setBackgroundColor(Color.GREEN); c2.setBackgroundColor(Color.WHITE); c3.setBackgroundColor(Color.RED); } // Adding the person's details to their // respective cells c1.add(pi.name); c2.add(pi.age + ""); c3.add(pi.origin); // Aligning the text to the center of each // cell c1.setTextAlignment(TextAlignment.CENTER); c2.setTextAlignment(TextAlignment.CENTER); c3.setTextAlignment(TextAlignment.CENTER); // Adding the cells to the table table.addCell(c1); table.addCell(c2); table.addCell(c3); } // Adding the table to the document doc.add(table); // Closing the document doc.close(); System.out.println("Table Created"); } // Catching any unwanted exceptions catch (Exception e) { System.err.println(e); } } }
Salida: Se crea una Tabla del siguiente formato
Publicación traducida automáticamente
Artículo escrito por coder_srinivas y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA