iText - dodawanie obrazu do tabeli

W tym rozdziale zobaczymy, jak dodać obraz do tabeli w dokumencie PDF za pomocą biblioteki iText.

Dodawanie obrazu do tabeli

Możesz utworzyć pusty dokument PDF, tworząc wystąpienie Documentklasa. Podczas tworzenia instancji tej klasy musisz przekazać plikPdfDocumentobiekt jako parametr do jego konstruktora. Następnie, aby dodać tabelę do dokumentu, musisz utworzyć wystąpienieTable i dodaj ten obiekt do dokumentu przy użyciu rozszerzenia add() metoda.

Aby dodać obraz do tej tabeli, musisz utworzyć wystąpienie Cell class, create i obiekt obrazu, który ma zostać dodany, dodaj obraz do pliku cell obiekt za pomocą add() metoda Cell klasa.

Poniżej przedstawiono kroki, aby wstawić obraz do komórki tabeli.

Krok 1: Tworzenie obiektu PdfWriter

Plik PdfWriter class reprezentuje Doc Writer dla pliku PDF, ta klasa należy do pakietu com.itextpdf.kernel.pdf. Konstruktor tej klasy akceptuje ciąg znaków reprezentujący ścieżkę do pliku, w którym ma zostać utworzony plik PDF.

Utwórz wystąpienie klasy PdfWriter, przekazując wartość ciągu reprezentującą ścieżkę, w której należy utworzyć plik PDF, do jej konstruktora, jak pokazano poniżej.

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingImage.pdf"; 
PdfWriter writer = new PdfWriter(dest);

Gdy obiekt tego typu jest przekazywany do PdfDocument (klasy), każdy element dodany do tego dokumentu zostanie zapisany w określonym pliku.

Krok 2: Tworzenie obiektu PdfDocument

Plik PdfDocumentclass to klasa reprezentująca dokument PDF w iText. Ta klasa należy do pakietucom.itextpdf.kernel.pdf. Aby utworzyć instancję tej klasy (w trybie pisania), musisz przekazać obiekt tej klasyPdfWriter do swojego konstruktora.

Utwórz wystąpienie PdfDocument klasy, przekazując utworzony powyżej obiekt PdfWriter do jego konstruktora, jak pokazano poniżej.

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer);

Po utworzeniu obiektu PdfDocument można dodać różne elementy, takie jak strona, czcionka, załącznik do pliku i moduł obsługi zdarzeń, używając odpowiednich metod udostępnionych przez jego klasę.

Krok 3: Tworzenie obiektu dokumentu

Plik Document klasa pakietu com.itextpdf.layoutjest elementem głównym podczas tworzenia samowystarczalnego pliku PDF. Jeden z konstruktorów tej klasy akceptuje obiekt tej klasyPdfDocument.

Utwórz wystąpienie Document class poprzez przekazanie obiektu klasy PdfDocument utworzone w poprzednich krokach, jak pokazano poniżej.

// Creating a Document  
Document document = new Document(pdfDoc);

Krok 4: Tworzenie obiektu tabeli

Plik Tableclass reprezentuje dwuwymiarową siatkę wypełnioną komórkami, uporządkowaną w wierszach i kolumnach. Należy do pakietucom.itextpdf.layout.element.

Utwórz wystąpienie Table klasa, jak pokazano poniżej.

// Creating a table 
float [] pointColumnWidths = {200F, 200F}; 
Table table = new Table(pointColumnWidths);

Krok 5: Tworzenie komórki

Stwórz cell obiekt, tworząc wystąpienie Cell klasa pakietu com.itextpdf.layout, jak pokazano niżej.

// Adding cell to the table
Cell cell = new Cell();  // Creating a cell

Krok 6: Tworzenie obrazu

Aby utworzyć image obiekt, przede wszystkim utwórz plik ImageData obiekt za pomocą create() metoda ImageDataFactoryklasa. Jako parametr tej metody przekaż parametr ciągu reprezentujący ścieżkę obrazu, jak pokazano poniżej.

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile);

Teraz utwórz wystąpienie Image klasa com.itextpdf.layout.elementpakiet. Podczas tworzenia wystąpienia przekaż plikImageData obiekt utworzony powyżej, jako parametr jego konstruktora, jak pokazano poniżej.

// Creating an Image object 
Image img = new Image(data);

Dodaj image obiektu do komórki za pomocą add() metoda klasy komórek, jak pokazano poniżej.

// Adding image to the cell  
cell.add(img.setAutoScale(true));

Krok 7: Dodanie komórki do tabeli

Na koniec, aby dodać tę komórkę do tabeli, wywołaj addCell() metoda Table klasę i zdaj cell obiekt jako parametr tej metody, jak pokazano poniżej.

table.addCell(cell);

Krok 8: Dodawanie tabeli do dokumentu

Dodaj table obiekt utworzony w poprzednim kroku przy użyciu add() metoda Document klasa, jak pokazano poniżej.

// Adding list to the document 
document.add(table);

Krok 9: Zamknięcie dokumentu

Zamknij dokument za pomocą close() metoda Document klasa, jak pokazano poniżej.

// Closing the document 
document.close();

Przykład

Poniższy program w języku Java przedstawia sposób dodawania obrazu do komórki tabeli w dokumencie PDF przy użyciu biblioteki iText. Tworzy dokument PDF o nazwieaddingImage.pdf, dodaje do niej tabelę, wstawia obraz (javafxLogo.jpg) do jednej ze swoich komórek i zapisuje go w ścieżce C:/itextExamples/.

Zapisz ten kod w pliku o nazwie AddingImageToTable.java.

import com.itextpdf.io.image.ImageData; 
import com.itextpdf.io.image.ImageDataFactory; 

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.Image; 
import com.itextpdf.layout.element.Table;  

public class a3AddingImageToTable {
   public static void main(String args[]) throws Exception {
      // Creating a PdfWriter object 
      String dest = "C:/itextExamples/addingImage.pdf";
      PdfWriter writer = new PdfWriter(dest);    
      
      // Creating a PdfDocument object   
      PdfDocument pdfDoc = new PdfDocument(writer);
      
      // Creating a Document object
      Document doc = new Document(pdfDoc);
      
      // Creating a table
      float [] pointColumnWidths = {150f, 150f};
      Table table = new Table(pointColumnWidths);
      
      // Populating row 1 and adding it to the table
      Cell cell1 = new Cell();
      cell1.add("Tutorial ID");
      table.addCell(cell1);
      
      Cell cell2 = new Cell();
      cell2.add("1");
      table.addCell(cell2);
      
      // Populating row 2 and adding it to the table
      Cell cell3 = new Cell();
      cell3.add("Tutorial Title");
      table.addCell(cell3);             
      
      Cell cell4 = new Cell(); 
      cell4.add("JavaFX");  
      table.addCell(cell4);
      
      // Populating row 3 and adding it to the table
      Cell cell5 = new Cell();
      cell5.add("Tutorial Author");
      table.addCell(cell5);            
      
      Cell cell6 = new Cell();
      cell6.add("Krishna Kasyap");
      table.addCell(cell6);
      
      // Populating row 4 and adding it to the table
      Cell cell7 = new Cell();
      cell7.add("Submission date");
      table.addCell(cell7);
      
      Cell cell8 = new Cell();
      cell8.add("2016-07-06");
      table.addCell(cell8);              
      
      // Populating row 5 and adding it to the table
      Cell cell9 = new Cell();
      cell9.add("Tutorial Icon");
      table.addCell(cell9);              
      
      // Creating the cell10       
      Cell cell10 = new Cell();              
      
      // Creating an ImageData object       
      String imageFile = "C:/itextExamples/javafxLogo.jpg";       
      ImageData data = ImageDataFactory.create(imageFile);        

      // Creating the image       
      Image img = new Image(data);              

      // Adding image to the cell10       
      cell10.add(img.setAutoScale(true));        

      // Adding cell110 to the table       
      table.addCell(cell10);                         
      
      // Adding Table to document        
      doc.add(table);                  
      
      // Closing the document       
      doc.close();  
      
      System.out.println("Image added to table successfully..");     
   } 
}

Skompiluj i uruchom zapisany plik Java z wiersza polecenia, używając następujących poleceń -

javac AddingImageToTable.java 
java AddingImageToTable

Po uruchomieniu powyższy program tworzy dokument PDF, wyświetlając następujący komunikat.

Image added to table successfully..

Jeśli zweryfikujesz określoną ścieżkę, możesz znaleźć utworzony dokument PDF, jak pokazano poniżej.