Metadatos son los datos que proporcionan información sobre los datos reales. Se describe comúnmente como “datos sobre datos”. Al enviar un archivo a alguien, no es una buena práctica enviar metadatos. Puede revelar su información al receptor que quizás no desee compartir. Algunos de los ejemplos incluyen; Nombre, nombre de la empresa, fecha de modificación del documento, marca y modelo de la cámara, etc. En este artículo, eliminaremos mediante programación los metadatos de las imágenes y los documentos mediante Java.

API de limpieza de metadatos de Java

GroupDocs.Metadata for Java es una API de metadatos para Java que admite la mayoría de los estándares de metadatos populares como EXIF, XMP, IPTC, etiquetas ID3, etc. Permite a los desarrolladores de Java agregar, modificar, extraer y eliminar metadatos. con varias opciones de una gran lista de formatos compatibles de documentos, imágenes y otros archivos.

Los pasos de este artículo y los ejemplos de código usan la API GroupDocs.Metadata. Entonces, antes de continuar, asegúrese de preparar el entorno de desarrollo utilizando cualquiera de las siguientes opciones:

  • Obtenga el archivo JAR de la sección descargas.
  • Agregue la siguiente configuración pom.xml en sus aplicaciones java basadas en 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>

Eliminar metadatos de documentos usando Java

Para eliminar todas las propiedades de metadatos disponibles sin aplicar ningún filtro y mantenerse a salvo en la era de COVID-19, use el método desinfectar. Los siguientes son los pasos para eliminar los metadatos de los documentos mediante GroupDocs.Metadata for Java.

  • Crear una instancia del objeto de la clase Metadata, pasando la ruta del documento de destino como parámetro.
  • Llame al método sanitize. Devuelve el número de propiedades de metadatos eliminadas.
  • Guarde el archivo de salida con los metadatos borrados utilizando el método guardar.

El siguiente ejemplo de código Java muestra cómo eliminar y borrar metadatos del documento.

/*
* Elimine todas las propiedades de metadatos detectadas de Word, Excel, 
* PowerPoint, PDF y otros documentos usando Java
*/
Metadata metadata = new Metadata("filePath/document.pdf");
int affected = metadata.sanitize();
metadata.save("filePath/output.pdf"); // Save the output document with no metadata 

Eliminar metadatos de imágenes usando Java

Si desea eliminar todos los metadatos de sus imágenes usando Java, puede usar el mismo método de desinfección siguiendo los mismos pasos:

  • Cree el objeto de la clase Metadata, pasando la ruta del documento de destino como parámetro.
  • Llame al método sanitize.
  • Guarde el archivo de salida utilizando el método guardar.
/*
* Elimine todas las propiedades de metadatos detectados de JPEG, PNG,
* WebP, BMP, GIF, TIFF y otras imágenes usando Java
*/
Metadata metadata = new Metadata("filePath/document.jpg");
int affected = metadata.sanitize();
metadata.save("filePath/output.jpg"); // Save the output image having no metadata

Eliminar metadatos selectivos de documentos e imágenes usando Java

No siempre es necesario eliminar todos los metadatos disponibles de los archivos; sin embargo, a veces queremos eliminar las propiedades selectivas de los metadatos. Los siguientes pasos muestran cómo ubicar y eliminar los metadatos usando el nombre específico de la propiedad.

  • Cree el objeto Metadatos para cargar el documento de destino o el archivo de imagen.
  • Crear especificaciones personalizadas para encontrar las propiedades de los metadatos.
  • Llame al método removeProperties y pase las especificaciones personalizadas.
  • Guarde el archivo de salida utilizando el método guardar.
// Elimine las propiedades de metadatos de documentos e imágenes que satisfagan el filtro personalizado usando Java
public class RemoveMetadataProperties {
	public static void removeMetadataProperties() {
		Metadata metadata = new Metadata("filePath/document.docx");
		/*
		 * Eliminar todas las propiedades que: 
		 * contiene el nombre del autor del documento O
		 * se refiere al último editor O 
		 * el valor de la propiedad es una cadena E igual a la cadena dada "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");
	}

	// Cree especificaciones personalizadas para filtrar las propiedades de los metadatos
	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());
		}
	}
}

Conclusión

En este artículo, aprendimos a limpiar metadatos de documentos e imágenes usando Java. Ahora puede crear su propia aplicación java de limpieza de metadatos. Puede admitir la eliminación de metadatos de documentos de procesamiento de texto, hojas de cálculo, presentaciones, archivos PDF, imágenes, correos electrónicos, libros electrónicos, dibujos, archivos zip y muchos más. Puede explorar más sobre la API de metadatos de Java en la documentación.

Ver también