Метаданные — это данные, предоставляющие информацию о фактических данных. Это обычно описывается как «данные о данных». При отправке файла кому-либо не рекомендуется отправлять вместе с ним метаданные. Это может раскрыть вашу информацию получателю, которой вы, возможно, не захотите делиться. Некоторые из примеров включают в себя; Имя, название компании, дата изменения документа, марка и модель камеры и т. д. В этой статье мы будем программно удалять метаданные из изображений и документов с помощью Java.

API очистки метаданных Java

GroupDocs.Metadata for Java — это API метаданных для Java, который поддерживает большинство популярных стандартов метаданных, таких как EXIF, XMP, IPTC, тег ID3 и т. д. Он позволяет разработчикам Java добавлять, изменять, извлекать и удалять метаданные. с различными параметрами из большого списка поддерживаемых форматов документов, изображений и других файлов.

Шаги, описанные в этой статье, и примеры кода используют API GroupDocs.Metadata. Поэтому, прежде чем продолжить, обязательно подготовьте среду разработки, используя любой из следующих вариантов:

  • Получите файл 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, используйте метод sanitize. Ниже приведены шаги по удалению метаданных из документов с помощью 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, вы можете использовать тот же метод очистки, выполнив те же действия:

  • Создайте объект класса Метаданные, передав путь к целевому документу в качестве параметра.
  • Вызвать метод 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 из документации.

Смотрите также