Siêu dữ liệu là dữ liệu cung cấp thông tin về dữ liệu thực tế. Nó thường được mô tả là “dữ liệu về dữ liệu”. Khi gửi tệp cho ai đó, bạn không nên gửi siêu dữ liệu theo. Nó có thể tiết lộ thông tin của bạn cho người nhận mà bạn có thể không muốn chia sẻ. Một số ví dụ bao gồm; Tên, Tên công ty, Ngày sửa đổi tài liệu, Nhà sản xuất và Kiểu máy ảnh, v.v. Trong bài viết này, chúng tôi sẽ xóa siêu dữ liệu khỏi hình ảnh và tài liệu bằng Java theo chương trình.

API dọn dẹp siêu dữ liệu Java

GroupDocs.Metadata for Java là API siêu dữ liệu dành cho Java hỗ trợ hầu hết các tiêu chuẩn siêu dữ liệu phổ biến như EXIF, XMP, IPTC, thẻ ID3, v.v. Nó cho phép các nhà phát triển Java thêm, sửa đổi, trích xuất và xóa siêu dữ liệu với nhiều tùy chọn khác nhau từ danh sách lớn các định dạng được hỗ trợ tài liệu, hình ảnh và các tệp khác.

Các bước trong bài viết này và các mẫu mã sử dụng API GroupDocs.Metadata. Vì vậy, trước khi bạn tiếp tục, vui lòng đảm bảo chuẩn bị môi trường phát triển bằng bất kỳ tùy chọn nào sau đây:

  • Lấy tệp JAR từ phần tải xuống.
  • Thêm cấu hình pom.xml sau vào các ứng dụng java dựa trên Maven của bạn
<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-metadata</artifactId>
        <version>20.11</version> 
</dependency>

Xóa siêu dữ liệu khỏi tài liệu bằng Java

Để xóa tất cả các thuộc tính siêu dữ liệu có sẵn mà không áp dụng bất kỳ bộ lọc nào và để giữ an toàn trong thời đại COVID-19, hãy sử dụng phương pháp vệ sinh. Sau đây là các bước để xóa siêu dữ liệu khỏi tài liệu bằng GroupDocs.Metadata for Java.

  • Khởi tạo đối tượng của lớp Siêu dữ liệu, chuyển đường dẫn của tài liệu đích làm tham số.
  • Gọi phương thức sanitize. Nó trả về số thuộc tính siêu dữ liệu đã bị xóa.
  • Lưu tệp đầu ra với siêu dữ liệu đã xóa bằng phương pháp lưu.

Mẫu mã Java sau đây cho biết cách xóa và xóa siêu dữ liệu khỏi tài liệu.

/*
* Xóa tất cả các thuộc tính siêu dữ liệu được phát hiện khỏi Word, Excel, 
* PowerPoint, PDF và các tài liệu khác sử dụng Java
*/
Metadata metadata = new Metadata("filePath/document.pdf");
int affected = metadata.sanitize();
metadata.save("filePath/output.pdf"); // Save the output document with no metadata 

Xóa siêu dữ liệu khỏi hình ảnh bằng Java

Nếu bạn muốn xóa tất cả siêu dữ liệu khỏi hình ảnh của mình bằng Java, bạn có thể sử dụng phương pháp khử trùng tương tự bằng cách thực hiện theo các bước tương tự:

  • Tạo đối tượng của lớp Siêu dữ liệu, chuyển đường dẫn tài liệu đích làm tham số.
  • Gọi phương thức sanitize.
  • Lưu tệp đầu ra bằng phương thức save.
/*
* Xóa tất cả các thuộc tính siêu dữ liệu được phát hiện khỏi JPEG, PNG,
* WebP, BMP, GIF, TIFF và các hình ảnh khác sử dụng Java
*/
Metadata metadata = new Metadata("filePath/document.jpg");
int affected = metadata.sanitize();
metadata.save("filePath/output.jpg"); // Save the output image having no metadata

Xóa siêu dữ liệu chọn lọc khỏi tài liệu và hình ảnh bằng Java

Không phải lúc nào cũng cần xóa tất cả siêu dữ liệu có sẵn khỏi tệp, tuy nhiên, đôi khi chúng tôi muốn xóa các thuộc tính siêu dữ liệu có chọn lọc. Các bước sau đây cho biết cách định vị và xóa siêu dữ liệu bằng cách sử dụng tên cụ thể của thuộc tính.

  • Tạo đối tượng Siêu dữ liệu để tải tệp tài liệu hoặc hình ảnh được nhắm mục tiêu.
  • Tạo thông số kỹ thuật được cá nhân hóa để tìm các thuộc tính siêu dữ liệu.
  • Gọi phương thức removeProperties và chuyển thông số kỹ thuật được cá nhân hóa.
  • Lưu tệp đầu ra bằng phương thức save.
// Xóa các thuộc tính siêu dữ liệu khỏi tài liệu và hình ảnh đáp ứng bộ lọc tùy chỉnh bằng Java
public class RemoveMetadataProperties {
	public static void removeMetadataProperties() {
		Metadata metadata = new Metadata("filePath/document.docx");
		/*
		 * Xóa tất cả các thuộc tính: 
		 * chứa tên của tác giả tài liệu HOẶC
		 * nó đề cập đến trình soạn thảo cuối cùng HOẶC 
		 * giá trị thuộc tính là một chuỗi VÀ bằng chuỗi đã cho "GroupDocs"
		 */
		int affected = metadata.removeProperties(new ContainsTagSpecification(Tags.getPerson().getCreator())
				.or(new ContainsTagSpecification(Tags.getPerson().getEditor()))
				.or(new OfTypeSpecification(MetadataPropertyType.String)
						.and(new RemoveMetadataProperties().new WithValueSpecification("GroupDocs"))));

		System.out.println(String.format("Properties removed: %s", affected));

		metadata.save("outputPath/document.docx");
	}

	// Tạo thông số kỹ thuật được cá nhân hóa để lọc thuộc tính siêu dữ liệu
	public class WithValueSpecification extends Specification {
		public WithValueSpecification(Object value) {
			setValue(value);
		}

		public final Object getValue() {
			return auto_Value;
		}

		private void setValue(Object value) {
			auto_Value = value;
		}

		private Object auto_Value;

		public boolean isSatisfiedBy(MetadataProperty candidate) {
			return candidate.getValue().getRawValue().equals(getValue());
		}
	}
}

Sự kết luận

Trong bài viết này, chúng ta đã học cách làm sạch siêu dữ liệu khỏi tài liệu và hình ảnh bằng Java. Bây giờ bạn có thể xây dựng ứng dụng java dọn dẹp siêu dữ liệu của riêng mình. Nó có thể hỗ trợ xóa siêu dữ liệu khỏi tài liệu soạn thảo văn bản, bảng tính, bản trình bày, tệp PDF, hình ảnh, email, sách điện tử, bản vẽ, tệp zip, v.v. Bạn có thể khám phá thêm về API siêu dữ liệu Java từ tài liệu.

Xem thêm