PDFBox - Tách tài liệu PDF

Trong chương trước, chúng ta đã biết cách thêm JavaScript vào tài liệu PDF. Bây giờ chúng ta hãy tìm hiểu cách chia một tài liệu PDF nhất định thành nhiều tài liệu.

Tách các trang trong tài liệu PDF

Bạn có thể chia tài liệu PDF đã cho thành nhiều tài liệu PDF bằng cách sử dụng lớp có tên Splitter. Lớp này được sử dụng để chia tài liệu PDF đã cho thành một số tài liệu khác.

Sau đây là các bước để tách một tài liệu PDF hiện có

Bước 1: Tải tài liệu PDF hiện có

Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp làm tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như được hiển thị bên dưới.

File file = new File("path of the document") 
PDDocument document = PDDocument.load(file);

Bước 2: Khởi tạo lớp Splitter

Lớp có tên Splitter chứa các phương thức để tách tài liệu PDF đã cho, do đó, khởi tạo lớp này như hình dưới đây.

Splitter splitter = new Splitter();

Bước 3: Tách tài liệu PDF

Bạn có thể chia tài liệu đã cho bằng cách sử dụng Split() phương pháp của Splitterphân loại lớp này. Phương thức này chấp nhận một đối tượng củaPDDocument lớp như một tham số.

List<PDDocument> Pages = splitter.split(document);

Các split() phương thức chia từng trang của tài liệu đã cho thành một tài liệu riêng lẻ và trả về tất cả những trang này dưới dạng danh sách.

Bước 4: Tạo một đối tượng Iterator

Để xem qua danh sách tài liệu, bạn cần lấy một đối tượng trình vòng lặp của danh sách có được ở bước trên, bạn cần lấy đối tượng trình vòng lặp của danh sách bằng cách sử dụng listIterator() như hình dưới đây.

Iterator<PDDocument> iterator = Pages.listIterator();

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

Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.

document.close();

Thí dụ

Giả sử, có một tài liệu PDF có tên sample.pdf trong con đường C:\PdfBox_Examples\ và tài liệu này chứa hai trang - một trang chứa hình ảnh và một trang khác chứa văn bản như hình dưới đây.

Ví dụ này minh họa cách chia nhỏ tài liệu PDF được đề cập ở trên. Ở đây, chúng tôi sẽ chia tài liệu PDF có tênsample.pdf thành hai tài liệu khác nhau sample1.pdfsample2.pdf. Lưu mã này trong một tệp có tênSplitPages.java.

import org.apache.pdfbox.multipdf.Splitter; 
import org.apache.pdfbox.pdmodel.PDDocument;

import java.io.File; 
import java.io.IOException; 
import java.util.List; 
import java.util.Iterator;
  
public class SplitPages {
   public static void main(String[] args) throws IOException {

      //Loading an existing PDF document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file); 

      //Instantiating Splitter class
      Splitter splitter = new Splitter();

      //splitting the pages of a PDF document
      List<PDDocument> Pages = splitter.split(document);

      //Creating an iterator 
      Iterator<PDDocument> iterator = Pages.listIterator();

      //Saving each page as an individual document
      int i = 1;
      while(iterator.hasNext()) {
         PDDocument pd = iterator.next();
         pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
      }
      System.out.println("Multiple PDF’s created");
      document.close();
   }
}

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 SplitPages.java 
java SplitPages

Khi thực thi, chương trình trên sẽ mã hóa tài liệu PDF đã cho và hiển thị thông báo sau.

Multiple PDF’s created

Nếu bạn xác minh đường dẫn đã cho, bạn có thể thấy rằng nhiều tệp PDF đã được tạo với tên sample1sample2 như hình bên dưới.