Cách đọc tệp pdf trong Java

PDF là định dạng tài liệu kỹ thuật số được sử dụng rộng rãi nhất. Chúng tôi có thể phân tích cú pháp tài liệu PDF và trích xuất văn bản cũng như hình ảnh từ chúng theo chương trình. Nó có thể hữu ích trong một số trường hợp, chẳng hạn như phân tích văn bản, truy xuất thông tin, chuyển đổi tài liệu, v.v. Trong bài viết này, chúng ta sẽ tìm hiểu cách trích xuất văn bản và hình ảnh từ tài liệu PDF bằng Java.

Các chủ đề sau đây sẽ được đề cập trong bài viết này:

API Java để trích xuất văn bản và hình ảnh từ tài liệu PDF

Để trích xuất văn bản và hình ảnh từ tài liệu PDF, chúng tôi sẽ sử dụng API GroupDocs.Parser for Java. Nó cho phép trích xuất văn bản, siêu dữ liệu và hình ảnh thô, được định dạng và có cấu trúc từ các tệp thuộc các định dạng được hỗ trợ. Vui lòng tải xuống JAR của API hoặc thêm cấu hình pom.xml sau vào ứng dụng Java dựa trên Maven.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>22.3</version> 
</dependency>

Trích xuất văn bản Java PDF

Chúng tôi có thể phân tích bất kỳ tài liệu PDF nào và trích xuất văn bản bằng cách thực hiện theo các bước dưới đây:

  • Đầu tiên, tải tệp PDF bằng lớp Trình phân tích cú pháp.
  • Tiếp theo, gọi phương thức Parser.getText() để trích xuất văn bản từ tài liệu đã tải.
  • Sau đó, lấy kết quả trong đối tượng lớp TextReader.
  • Cuối cùng, gọi phương thức TextReader.readToEnd() để đọc tất cả các ký tự từ vị trí hiện tại đến cuối trình đọc văn bản và trả về chúng dưới dạng một chuỗi.

Mẫu mã sau đây cho biết cách trích xuất văn bản từ tệp PDF bằng Java.

// Ví dụ mã này trình bày cách phân tích cú pháp PDF và trích xuất văn bản.
// Tạo một thể hiện của lớp Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Trích xuất văn bản vào trình đọc
try (TextReader reader = parser.getText()) {
    // In văn bản từ tài liệu
    // Nếu trích xuất văn bản không được hỗ trợ thì trình đọc sẽ không có giá trị
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Trích xuất văn bản từ tài liệu PDF bằng Java

Trích xuất văn bản từ tài liệu PDF bằng Java

Trích xuất văn bản từ trang cụ thể của tài liệu PDF bằng Java

Bạn có thể phân tích tài liệu PDF và trích xuất văn bản từ một trang cụ thể bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:

Mẫu mã sau đây cho biết cách trích xuất văn bản từ một trang cụ thể bằng Java.

// Ví dụ về mã này trình bày cách phân tích cú pháp PDF và trích xuất văn bản từ một trang cụ thể.
// Tạo một thể hiện của lớp Parser
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Nhận thông tin tài liệu
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Kiểm tra xem tài liệu có trang không
if (documentInfo == null || documentInfo.getRawPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

// Trích xuất văn bản vào trình đọc
try (TextReader reader = parser.getText(1)) {
    // In văn bản từ tài liệu
    // Nếu trích xuất văn bản không được hỗ trợ thì trình đọc sẽ không có giá trị
    System.out.println(reader.readToEnd());
}

API cũng cho phép kiểm tra xem tài liệu có hỗ trợ tính năng rút gọn văn bản hay không. Với mục đích này, chúng ta có thể sử dụng thuộc tính Parser.getFeatures().isText(). Vui lòng đọc thêm về các tính năng được hỗ trợ.

Trích xuất hình ảnh từ PDF (Java)

Chúng tôi có thể phân tích bất kỳ tài liệu PDF nào và trích xuất hình ảnh bằng cách thực hiện theo các bước dưới đây:

  • Đầu tiên, tải tệp PDF bằng lớp Trình phân tích cú pháp.
  • Tiếp theo, gọi phương thức Parser.getImages() và lấy tập hợp các đối tượng PageImageArea từ tài liệu đã tải.
  • Sau đó, Kiểm tra xem bộ sưu tập có rỗng không.
  • Sau đó, lặp lại tất cả các hình ảnh được tìm thấy.
  • Cuối cùng, hiển thị chi tiết hình ảnh.

Mẫu mã sau đây cho biết cách lấy thông tin chi tiết về hình ảnh từ tệp PDF bằng Java.

// Ví dụ mã này trình bày cách phân tích cú pháp PDF và lấy hình ảnh.
// Tạo một thể hiện của lớp Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Trích xuất hình ảnh
Iterable<PageImageArea> images = parser.getImages();

// Kiểm tra xem việc trích xuất hình ảnh có được hỗ trợ không
if (images == null) {
    System.out.println("Images extraction isn't supported");
    return;
}

// Lặp lại hình ảnh
for (PageImageArea image : images) {
    // In chỉ mục trang, hình chữ nhật và loại hình ảnh:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}
Nhận hình ảnh từ Tài liệu PDF bằng Java

Nhận hình ảnh từ tài liệu PDF bằng Java

Trích xuất hình ảnh từ trang cụ thể của tài liệu PDF bằng Java

Chúng tôi có thể trích xuất hình ảnh từ một trang cụ thể bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:

Mẫu mã sau đây cho biết cách trích xuất hình ảnh từ một trang cụ thể bằng Java.

// Ví dụ về mã này trình bày cách phân tích cú pháp tệp PDF và lấy hình ảnh từ một trang cụ thể.
// Tạo một thể hiện của lớp Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Nhận thông tin tài liệu
IDocumentInfo documentInfo = parser.getDocumentInfo();

// Kiểm tra xem tài liệu có trang không
if (documentInfo.getPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

int pageIndex = 1;

// Lặp lại hình ảnh
// Chúng tôi bỏ qua việc kiểm tra null vì chúng tôi đã kiểm tra hỗ trợ tính năng trích xuất hình ảnh trước đó
for (PageImageArea image : parser.getImages(pageIndex)) {
  // In chỉ mục trang, hình chữ nhật và loại hình ảnh:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}

Trích xuất và lưu hình ảnh vào tệp bằng Java

Chúng ta cũng có thể lưu hình ảnh được trích xuất bằng cách thực hiện theo các bước dưới đây:

  • Đầu tiên, tải tệp PDF bằng lớp Trình phân tích cú pháp.
  • Tiếp theo, gọi phương thức Parser.getImages() và lấy tập hợp các đối tượng PageImageArea từ tài liệu đã tải.
  • Sau đó, tạo một thể hiện của lớp ImageOptions và đặt định dạng hình ảnh.
  • Sau đó, lặp lại tất cả các hình ảnh được tìm thấy.
  • Cuối cùng, lưu bằng phương thức save(). Nó lấy đường dẫn tệp đầu ra và ImageOptions làm đối số.

Mẫu mã sau đây cho biết cách trích xuất và lưu hình ảnh vào tệp bằng Java.

// Ví dụ mã này trình bày cách trích xuất và hình ảnh trong thư mục.
// Tạo một thể hiện của lớp Parser
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Trích xuất hình ảnh từ tài liệu
Iterable<PageImageArea> images = parser.getImages();

// Kiểm tra xem việc trích xuất hình ảnh có được hỗ trợ không
if (images == null) {
    System.out.println("Page images extraction isn't supported");
    return;
}

// Tạo các tùy chọn lưu hình ảnh ở định dạng PNG
ImageOptions options = new ImageOptions(ImageFormat.Png);

int imageNumber = 0;

// Lặp lại hình ảnh
for (PageImageArea image : images)
{
    // Lưu hình ảnh vào tệp PNG
    image.save(String.format("D:\\Files\\Parser\\Images\\%d.png", imageNumber), options);
    imageNumber++;
}
Trích xuất và lưu hình ảnh vào tệp bằng Java

Trích xuất và lưu hình ảnh vào tệp bằng Java

Nhận giấy phép miễn phí

Bạn có thể dùng thử API mà không bị giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Phần kết luận

Trong bài viết này, chúng ta đã học được cách:

  • trích xuất tất cả văn bản từ toàn bộ tài liệu PDF hoặc các trang cụ thể của tài liệu bằng Java;
  • trích xuất hình ảnh từ tệp PDF theo chương trình;
  • lưu hình ảnh được trích xuất trên đĩa cục bộ.

Ngoài ra, bạn có thể tìm hiểu thêm về GroupDocs.Parser cho API Java bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm