iText - Thêm hình ảnh vào bảng

Trong chương này, chúng ta sẽ xem cách thêm hình ảnh vào bảng trong tài liệu PDF bằng thư viện iText.

Thêm hình ảnh vào bảng

Bạn có thể tạo một tài liệu PDF trống bằng cách khởi tạo Documentlớp học. Trong khi khởi tạo lớp này, bạn cần phải vượt quaPdfDocumentđối tượng như một tham số, cho phương thức khởi tạo của nó. Sau đó, để thêm bảng vào tài liệu, bạn cần khởi tạoTable và thêm đối tượng này vào tài liệu bằng cách sử dụng add() phương pháp.

Để thêm hình ảnh vào bảng này, bạn cần khởi tạo Cell lớp, tạo và một đối tượng của hình ảnh được yêu cầu thêm, thêm hình ảnh vào cell đối tượng sử dụng add() phương pháp của Cell lớp học.

Sau đây là các bước để chèn hình ảnh vào ô của bảng.

Bước 1: Tạo đối tượng PdfWriter

Các PdfWriter lớp này đại diện cho Doc Writer cho một tệp PDF, lớp này thuộc về gói com.itextpdf.kernel.pdf. Hàm tạo của lớp này chấp nhận một chuỗi, đại diện cho đường dẫn của tệp nơi tệp PDF sẽ được tạo.

Khởi tạo lớp PdfWriter bằng cách chuyển một giá trị chuỗi đại diện cho đường dẫn mà bạn cần tạo PDF, tới phương thức khởi tạo của nó, như được hiển thị bên dưới.

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

Khi một đối tượng thuộc loại này được chuyển đến PdfDocument (lớp), mọi phần tử được thêm vào tài liệu này sẽ được ghi vào tệp được chỉ định.

Bước 2: Tạo đối tượng PdfDocument

Các PdfDocumentlớp là lớp đại diện cho Tài liệu PDF trong iText. Lớp này thuộc về góicom.itextpdf.kernel.pdf. Để khởi tạo lớp này (ở chế độ viết), bạn cần chuyển một đối tượng của lớpPdfWriter với hàm tạo của nó.

Khởi tạo PdfDocument bằng cách chuyển đối tượng PdfWriter đã tạo ở trên tới phương thức khởi tạo của nó, như được hiển thị bên dưới.

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

Khi một đối tượng PdfDocument được tạo, bạn có thể thêm các phần tử khác nhau như trang, phông chữ, tệp đính kèm và trình xử lý sự kiện bằng cách sử dụng các phương pháp tương ứng do lớp của nó cung cấp.

Bước 3: Tạo đối tượng Tài liệu

Các Document lớp của gói com.itextpdf.layoutlà phần tử gốc trong khi tạo một tệp PDF tự túc. Một trong những hàm tạo của lớp này chấp nhận một đối tượng của lớpPdfDocument.

Khởi tạo Document lớp bằng cách truyền đối tượng của lớp PdfDocument được tạo ở các bước trước, như được hiển thị bên dưới.

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

Bước 4: Tạo đối tượng Table

Các Tablelớp đại diện cho một lưới hai chiều chứa đầy các ô, được sắp xếp theo hàng và cột. Nó thuộc về góicom.itextpdf.layout.element.

Khởi tạo Table lớp như hình bên dưới.

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

Bước 5: Tạo ô

Tạo một cell đối tượng bằng cách khởi tạo Cell lớp của gói com.itextpdf.layout, như hình dưới đây.

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

Bước 6: Tạo hình ảnh

Để tạo image đối tượng, trước hết, hãy tạo một ImageData đối tượng sử dụng create() phương pháp của ImageDataFactorylớp học. Là một tham số của phương thức này, hãy chuyển một tham số chuỗi đại diện cho đường dẫn của hình ảnh, như được hiển thị bên dưới.

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

Bây giờ, khởi tạo Image lớp của com.itextpdf.layout.elementgói hàng. Trong khi khởi tạo, hãy vượt quaImageData đối tượng được tạo ở trên, như một tham số cho hàm tạo của nó, như được hiển thị bên dưới.

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

Thêm image đối tượng với ô bằng cách sử dụng add() phương thức của lớp ô, như được hiển thị bên dưới.

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

Bước 7: Thêm ô vào bảng

Cuối cùng, để thêm ô này vào bảng, hãy gọi addCell() phương pháp của Table lớp và vượt qua cell đối tượng như một tham số cho phương thức này, như được hiển thị bên dưới.

table.addCell(cell);

Bước 8: Thêm bảng vào tài liệu

Thêm table đối tượng được tạo ở bước trước bằng cách sử dụng add() phương pháp của Document lớp, như hình dưới đây.

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

Bước 9: Đóng tài liệu

Đóng tài liệu bằng cách sử dụng close() phương pháp của Document lớp, như hình dưới đây.

// Closing the document 
document.close();

Thí dụ

Chương trình Java sau đây trình bày cách thêm hình ảnh vào một ô của bảng trong tài liệu PDF bằng thư viện iText. Nó tạo ra một tài liệu PDF với tênaddingImage.pdf, thêm một bảng vào nó, chèn một hình ảnh (javafxLogo.jpg) vào một trong các ô của nó và lưu nó trong đường dẫn C:/itextExamples/.

Lưu mã này trong một tệp có tên 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..");     
   } 
}

Biên dịch và thực thi tệp Java đã lưu từ Dấu nhắc lệnh bằng các lệnh sau:

javac AddingImageToTable.java 
java AddingImageToTable

Khi thực hiện, chương trình trên tạo một tài liệu PDF, hiển thị thông báo sau.

Image added to table successfully..

Nếu bạn xác minh đường dẫn được chỉ định, bạn có thể tìm thấy tài liệu PDF đã tạo, như được hiển thị bên dưới.