Metadane to dane, które dostarczają informacji o rzeczywistych danych. Powszechnie określa się je jako „dane o danych”. Wysyłając komuś plik, przesyłanie metadanych nie jest dobrą praktyką. Może ujawnić odbiorcy informacje, których możesz nie chcieć udostępniać. Niektóre przykłady obejmują; Imię i nazwisko, nazwa firmy, data modyfikacji dokumentu, marka i model aparatu itp. W tym artykule będziemy programowo usuwać metadane z obrazów i dokumentów przy użyciu języka Java.

API Java Metadata Cleaner

GroupDocs.Metadata for Java to interfejs API metadanych dla języka Java, który obsługuje większość popularnych standardów metadanych, takich jak EXIF, XMP, IPTC, tag ID3 itp. Umożliwia programistom języka Java dodawanie, modyfikowanie, wyodrębnianie i usuwanie metadanych z różnymi opcjami z dużej listy obsługiwanych formatów dokumentów, obrazów i innych plików.

Kroki opisane w tym artykule i przykłady kodu korzystają z interfejsu API GroupDocs.Metadata. Dlatego zanim przejdziesz dalej, przygotuj środowisko programistyczne, korzystając z jednej z następujących opcji:

  • Pobierz plik JAR z sekcji pliki do pobrania.
  • Dodaj następującą konfigurację pom.xml w swoich aplikacjach Java opartych na 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>

Usuń metadane z dokumentów przy użyciu języka Java

Aby usunąć wszystkie dostępne właściwości metadanych bez stosowania żadnego filtra i zachować bezpieczeństwo w dobie COVID-19, użyj metody sanitize. Poniżej przedstawiono kroki usuwania metadanych z dokumentów przy użyciu GroupDocs.Metadata for Java.

  • Utwórz instancję obiektu klasy Metadata, przekazując jako parametr ścieżkę dokumentu docelowego.
  • Wywołaj metodę sanitize. Zwraca liczbę usuniętych właściwości metadanych.
  • Zapisz plik wyjściowy z wyczyszczonymi metadanymi za pomocą metody save.

Poniższy przykładowy kod Java pokazuje, jak usunąć i wyczyścić metadane z dokumentu.

/*
* Usuń wszystkie wykryte właściwości metadanych z programów Word, Excel, 
* PowerPoint, PDF i inne dokumenty przy użyciu języka Java
*/
Metadata metadata = new Metadata("filePath/document.pdf");
int affected = metadata.sanitize();
metadata.save("filePath/output.pdf"); // Save the output document with no metadata 

Usuń metadane z obrazów za pomocą Java

Jeśli chcesz usunąć wszystkie metadane ze swoich obrazów przy użyciu języka Java, możesz użyć tej samej metody czyszczenia, wykonując te same czynności:

  • Utwórz obiekt klasy Metadata, przekazując jako parametr ścieżkę do dokumentu docelowego.
  • Wywołaj metodę sanitize.
  • Zapisz plik wyjściowy za pomocą metody save.
/*
* Usuń wszystkie wykryte właściwości metadanych z plików JPEG, PNG,
* WebP, BMP, GIF, TIFF i inne obrazy wykorzystujące Javę
*/
Metadata metadata = new Metadata("filePath/document.jpg");
int affected = metadata.sanitize();
metadata.save("filePath/output.jpg"); // Save the output image having no metadata

Usuń selektywne metadane z dokumentów i obrazów za pomocą języka Java

Nie zawsze jest wymagane usunięcie wszystkich dostępnych metadanych z plików, jednak czasami chcemy usunąć selektywne właściwości metadanych. Poniższe kroki pokazują, jak zlokalizować i usunąć metadane przy użyciu określonej nazwy właściwości.

  • Utwórz obiekt Metadata, aby załadować docelowy dokument lub plik obrazu.
  • Twórz spersonalizowane specyfikacje, aby znaleźć właściwości metadanych.
  • Wywołaj metodę removeProperties i przekaż spersonalizowane specyfikacje.
  • Zapisz plik wyjściowy za pomocą metody save.
// Usuń właściwości metadanych z dokumentów i obrazów, które spełniają wymagania dostosowanego filtra przy użyciu języka Java
public class RemoveMetadataProperties {
	public static void removeMetadataProperties() {
		Metadata metadata = new Metadata("filePath/document.docx");
		/*
		 * Usuń wszystkie właściwości, które: 
		 * zawiera nazwisko autora dokumentu LUB
		 * odnosi się do ostatniego redaktora LUB 
		 * wartość właściwości jest łańcuchem AND równym podanemu ciągowi "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");
	}

	// Twórz spersonalizowane specyfikacje, aby filtrować właściwości metadanych
	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());
		}
	}
}

Wniosek

W tym artykule nauczyliśmy się czyszczenia metadanych z dokumentów i obrazów przy użyciu języka Java. Teraz możesz zbudować własną aplikację Java do czyszczenia metadanych. Może obsługiwać usuwanie metadanych z dokumentów edytorów tekstu, arkuszy kalkulacyjnych, prezentacji, plików PDF, obrazów, wiadomości e-mail, e-booków, rysunków, plików ZIP i wielu innych. Więcej informacji na temat interfejsu API metadanych Java można znaleźć w dokumentacji.

Zobacz też