Establecer el fondo de una tabla en un PDF usando Java

¿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

set background to a table

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *