Nếu bạn có một tài liệu và bạn muốn sử dụng các hình ảnh bên trong tài liệu đó trong một số tài liệu khác, thì đây là một trong những giải pháp. Trong bài viết này, chúng ta sẽ học cách lập trình trích xuất hình ảnh từ các tài liệu PDF, Excel, PowerPoint và Word bằng Java.

Trích xuất hình ảnh từ tài liệu trong Java

API Java trích xuất hình ảnh

Phân tích tài liệu và trích xuất dữ liệu trong Java

Để trích xuất hình ảnh, chúng tôi sẽ sử dụng GroupDocs.Parser for Java. API Java này hỗ trợ phân tích cú pháp tài liệu và trích xuất hình ảnh, văn bản và siêu dữ liệu từ tài liệu soạn thảo văn bản, bảng tính, bản trình bày, tài liệu lưu trữ và tài liệu email. Sau đây là các định dạng tài liệu được API Java hỗ trợ để trích xuất hình ảnh.

Loại tài liệu Định dạng tệp
Soạn thảo văn bản DOC, DOCX, DOCM, DOT, DOTX, DOTM, ODT, OTT, RTF
Bảng tính XLS, XLSX, XLSM, XLSB, XLT, XLTX, XLTM, ODS, OTS, XLA, XLAM, SỐ
Thuyết trình PPT, PPTX, PPTM, PPS, PPSX, PPSM, POT, POTX, POTM, ODP, OTP
Tài liệu xách tay PDF
Email EML, EMLX, bột ngọt
Lưu trữ ZIP

Trước khi bạn bắt đầu với các ví dụ bên dưới, tôi khuyên bạn nên thiết lập môi trường bằng cách tải xuống phiên bản mới nhất của API Java phân tích cú pháp tài liệu từ phần tải xuống hoặc bạn có thể đặt các cấu hình sau trong các ứng dụng java dựa trên maven của mình:

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

Trích xuất hình ảnh từ tài liệu PDF trong Java

Tài liệu PDF để trích xuất hình ảnh

Thực hiện theo các bước đơn giản sau để lấy tất cả hình ảnh từ tài liệu PDF.

  1. Khởi tạo đối tượng lớp Parser.
  2. Gọi phương thức getImages của lớp Parser để lấy tất cả các hình ảnh.
  3. Lặp lại hình ảnh bằng cách sử dụng PageImageArea.
  4. Lưu ảnh bằng phương thức lưu của PageImageArea.

Xong rôi. Xem mã đầy đủ bên dưới. Hình ảnh được trích xuất có thể được lưu ở định dạng BMP, GIF, JPEG, PNG và WebP.

// Trích xuất hình ảnh từ tài liệu Word, Excel, PowerPoint, PDF theo chương trình bằng cách sử dụng GroupDocs.Parser for Java
try (Parser parser = new Parser("path/document.pdf")) {
	// Trích xuất hình ảnh
	Iterable<PageImageArea> images = parser.getImages();

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

	// Lặp lại hình ảnh và Lưu
	for (PageImageArea image : images) {
		// In chỉ mục trang, hình chữ nhật và loại tệp hình ảnh:
		System.out.println(String.format("Page: %d, R: %s, Type: %s", image.getPage().getIndex(), 
				image.getRectangle(), image.getFileType()));
		image.save(String.format("filesPath/image_%d.png", imageNumber), options);
		imageNumber++;
	}
}

Đây là những hình ảnh được lấy từ tài liệu PDF bằng mã ở trên.

Trích xuất hình ảnh từ tài liệu bằng Java

Trích xuất hình ảnh từ tệp Word, Excel, PowerPoint trong Java

Tương tự như vậy, tất cả các hình ảnh có thể được lấy ra từ các tệp xử lý văn bản, bảng tính, bản trình bày với cơ sở mã không thay đổi. Những gì bạn phải thay đổi? Chỉ cần đường dẫn tài liệu nguồn và phần mở rộng tệp phù hợp.

Parser parser = new Parser("path/document.docx") // Word Document
// Parser parser = new Parser("path/document.xlsx") // Excel Spreadsheet
// Parser parser = new Parser("path/document.pptx") // PowerPoint Presentation
// Parser parser = new Parser("path/document.pdf") // PDF Document

Trích xuất hình ảnh từ trang tài liệu cụ thể trong Java

Nếu bạn không muốn trích xuất tất cả các hình ảnh từ toàn bộ tài liệu mà từ một số trang cụ thể. Mã bên dưới trình bày cách chúng tôi có thể trích xuất hình ảnh từ một trang cụ thể của tài liệu trong Java.

// Trích xuất hình ảnh từ trang cụ thể của Word, Excel, PowerPoint, PDF trong Java bằng GroupDocs.Parser
try (Parser parser = new Parser("path/document.pdf"")) {
	// Nhận thông tin tài liệu
	IDocumentInfo documentInfo = parser.getDocumentInfo();

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

	// Lặp lại qua các trang
	for (int pageIndex = 0; pageIndex < documentInfo.getPageCount(); pageIndex++) {
		// In số trang
		System.out.println(String.format("Page %d/%d", pageIndex + 1, documentInfo.getPageCount()));

		// Lặp lại hình ảnh - Bỏ qua kiểm tra NULL trong các ví dụ
		for (PageImageArea image : parser.getImages(pageIndex)) {
			// In thông tin hình ảnh và lưu tệp
			System.out.println(String.format("R: %s, Text: %s", image.getRectangle(), image.getFileType()));
			image.save(String.format("filesPath/image_%d.jpeg", imageNumber), options);
			imageNumber++;
		}
	}
}

Sự kết luận

Hôm nay, chúng ta đã học cách trích xuất hình ảnh từ toàn bộ tài liệu và trang cụ thể của tài liệu soạn thảo văn bản, bảng tính, bản trình bày và PDF bằng Java. Không có sự khác biệt trong mã nếu chúng ta phải trích xuất hình ảnh từ các tệp có định dạng tệp khác nhau. Chúng ta chỉ cần vượt qua đúng con đường và tên. Đó là nó.

Xem thêm