Метадані — це дані, які надають інформацію про фактичні дані. Його зазвичай описують як «дані про дані». Надсилаючи файл комусь, надсилати метадані не рекомендується. Це може розкрити вашу інформацію отримувачу, якою ви, можливо, не захочете ділитися. Деякі з прикладів включають: Ім’я, назва компанії, дата зміни документа, марка та модель камери тощо. У цій статті ми будемо програмно видаляти метадані із зображень і документів за допомогою Java.

Java Metadata Cleaner API

GroupDocs.Metadata for Java — це API метаданих для Java, який підтримує більшість популярних стандартів метаданих, як-от EXIF, XMP, IPTC, тег ID3 тощо. Це дозволяє розробникам Java додавати, змінювати, видобувати та видаляти метадані з різними параметрами з великого списку підтримуваних форматів документів, зображень та інших файлів.

Кроки в цій статті та зразки коду використовують GroupDocs.Metadata API. Отже, перш ніж продовжити, підготуйте середовище розробки за допомогою будь-якого з наведених нижче варіантів:

  • Отримайте файл JAR із розділу завантаження.
  • Додайте наступну конфігурацію pom.xml у свої програми Java на основі Maven
<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>

Видаліть метадані з документів за допомогою Java

Щоб видалити всі доступні властивості метаданих, не застосовуючи жодного фільтра, і щоб залишатися в безпеці в епоху COVID-19, скористайтеся методом дезінфекції. Нижче наведено кроки для видалення метаданих із документів за допомогою GroupDocs.Metadata for Java.

  • Створіть екземпляр об’єкта класу Metadata, передаючи шлях до цільового документа як параметр.
  • Викличте метод sanitize. Він повертає кількість вилучених властивостей метаданих.
  • Збережіть вихідний файл із очищеними метаданими за допомогою методу save.

У наступному прикладі коду Java показано, як видалити та очистити метадані з документа.

/*
* Видаліть усі виявлені властивості метаданих із Word, Excel, 
* PowerPoint, PDF та інші документи з використанням Java
*/
Metadata metadata = new Metadata("filePath/document.pdf");
int affected = metadata.sanitize();
metadata.save("filePath/output.pdf"); // Save the output document with no metadata 

Видалення метаданих із зображень за допомогою Java

Якщо ви хочете видалити всі метадані зі своїх зображень за допомогою Java, ви можете використати той самий метод дезінфекції, виконавши ті самі дії:

  • Створіть об’єкт класу Metadata, передавши шлях цільового документа як параметр.
  • Викличте метод sanitize.
  • Збережіть вихідний файл за допомогою методу save.
/*
* Видалити всі виявлені властивості метаданих із JPEG, PNG,
* WebP, BMP, GIF, TIFF та інші зображення за допомогою Java
*/
Metadata metadata = new Metadata("filePath/document.jpg");
int affected = metadata.sanitize();
metadata.save("filePath/output.jpg"); // Save the output image having no metadata

Видаліть вибіркові метадані з документів і зображень за допомогою Java

Не завжди потрібно видаляти всі доступні метадані з файлів, однак іноді ми хочемо видалити вибіркові властивості метаданих. Наступні кроки показують, як знайти та видалити метадані за допомогою конкретного імені властивості.

  • Створіть об’єкт Metadata, щоб завантажити цільовий документ або файл зображення.
  • Створіть персоналізовані специфікації, щоб знайти властивості метаданих.
  • Викличте метод removeProperties і передайте персоналізовані специфікації.
  • Збережіть вихідний файл за допомогою методу save.
// Видаліть властивості метаданих із документів і зображень, які задовольняють налаштований фільтр за допомогою Java
public class RemoveMetadataProperties {
	public static void removeMetadataProperties() {
		Metadata metadata = new Metadata("filePath/document.docx");
		/*
		 * Видаліть усі властивості, які: 
		 * містить ім'я автора документа АБО
		 * це стосується останнього редактора АБО 
		 * значенням властивості є рядок І дорівнює заданому рядку "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");
	}

	// Створіть персоналізовані специфікації для фільтрації властивостей метаданих
	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());
		}
	}
}

Висновок

У цій статті ми навчилися очищати метадані з документів і зображень за допомогою Java. Тепер ви можете створити власну програму Java для очищення метаданих. Він може підтримувати видалення метаданих із текстових документів, електронних таблиць, презентацій, PDF-файлів, зображень, електронних листів, електронних книг, малюнків, zip-файлів тощо. Ви можете дізнатися більше про API метаданих Java у документації.

Дивись також