Metadados são os dados que fornecem informações sobre os dados reais. É comumente descrito como “dados sobre dados”. Ao enviar um arquivo para alguém, não é uma boa prática enviar metadados junto. Ele pode revelar suas informações ao receptor que você pode não querer compartilhar. Alguns dos exemplos incluem; Nome, Nome da Empresa, Data de Modificação do Documento, Marca e Modelo da Câmera, etc. Neste artigo, removemos programaticamente os metadados das imagens e documentos usando Java.

API de limpeza de metadados Java

GroupDocs.Metadata for Java é uma API de metadados para Java que suporta a maioria dos padrões de metadados populares como EXIF, XMP, IPTC, tag ID3, etc. Ele permite que desenvolvedores Java adicionem, modifiquem, extraiam e removam metadados com várias opções de uma grande lista de formatos suportados de documentos, imagens e outros arquivos.

As etapas neste artigo e os exemplos de código usam a API GroupDocs.Metadata. Portanto, antes de prosseguir, certifique-se de preparar o ambiente de desenvolvimento usando qualquer uma das seguintes opções:

  • Obtenha o arquivo JAR da seção downloads.
  • Adicione a seguinte configuração pom.xml em seus aplicativos java baseados em 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>

Remover metadados de documentos usando Java

Para remover todas as propriedades de metadados disponíveis sem aplicar nenhum filtro e ficar seguro na era do COVID-19, use o método sanitize. A seguir estão as etapas para remover metadados dos documentos usando GroupDocs.Metadata para Java.

  • Instanciar o objeto da classe Metadata, passando como parâmetro o caminho do documento de destino.
  • Chame o método sanitize. Ele retorna o número das propriedades de metadados removidas.
  • Salve o arquivo de saída com metadados limpos usando o método save.

A amostra de código Java a seguir mostra como remover e limpar metadados do documento.

/*
* Remova todas as propriedades de metadados detectadas do Word, Excel, 
* PowerPoint, PDF e outros 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 

Remover metadados de imagens usando Java

Se você deseja remover todos os metadados de suas imagens usando Java, pode usar o mesmo método de limpeza seguindo as mesmas etapas:

  • Crie o objeto da classe Metadata, passando o caminho do documento de destino como parâmetro.
  • Chame o método sanitize.
  • Salve o arquivo de saída usando o método save.
/*
* Remova todas as propriedades de metadados detectadas de JPEG, PNG,
* WebP, BMP, GIF, TIFF e outras imagens 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

Remover metadados seletivos de documentos e imagens usando Java

Nem sempre é necessário remover todos os metadados disponíveis dos arquivos, no entanto, às vezes queremos remover as propriedades de metadados seletivas. As etapas a seguir mostram como localizar e remover os metadados usando o nome específico da propriedade.

  • Crie um objeto Metadados para carregar o documento ou arquivo de imagem de destino.
  • Crie especificações personalizadas para encontrar as propriedades de metadados.
  • Chame o método removeProperties e passe as especificações personalizadas.
  • Salve o arquivo de saída usando o método save.
// Remova as propriedades de metadados de documentos e imagens que satisfaçam o filtro customizado usando Java
public class RemoveMetadataProperties {
	public static void removeMetadataProperties() {
		Metadata metadata = new Metadata("filePath/document.docx");
		/*
		 * Remova todas as propriedades que: 
		 * contém o nome do autor do documento OU
		 * refere-se ao último editor OU 
		 * o valor da propriedade é uma string E igual à string fornecida "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");
	}

	// Crie especificações personalizadas para filtrar propriedades de metadados
	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());
		}
	}
}

Conclusão

Neste artigo, aprendemos como limpar metadados de documentos e imagens usando Java. Agora você pode construir seu próprio aplicativo java de limpeza de metadados. Ele pode suportar a remoção de metadados de documentos de processamento de texto, planilhas, apresentações, arquivos PDF, imagens, e-mails, eBooks, desenhos, arquivos zip e muito mais. Você pode explorar mais sobre a API de metadados Java na documentação.

Veja também