メタデータは、実際のデータに関する情報を提供するデータです。一般に「データに関するデータ」と呼ばれます。誰かにファイルを送信する場合、メタデータを一緒に送信することはお勧めできません。それはあなたが共有したくないかもしれないあなたの情報を受信者に明らかにすることができます。いくつかの例が含まれます。名前、会社名、ドキュメントの変更日、カメラのメーカーとモデルなど。この記事では、Javaを使用して画像とドキュメントからメタデータをプログラムで削除します

JavaメタデータクリーナーAPI

GroupDocs.Metadata for Javaは、EXIF、XMP、IPTC、ID3タグなどの一般的なメタデータ標準のほとんどをサポートするJava用のメタデータAPIです。これにより、Java開発者はメタデータを追加、変更、抽出、および削除できます。ドキュメント、画像、その他のファイルのサポートされている形式の大規模なリストからさまざまなオプションを使用できます。

この記事の手順とコードサンプルでは、GroupDocs.MetadataAPIを使用しています。したがって、先に進む前に、次のいずれかのオプションを使用して開発環境を準備してください。

  • ダウンロードセクションからJARファイルを取得します。
  • MavenベースのJavaアプリケーションに次のpom.xml構成を追加します
<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.MetadataforJavaを使用してドキュメントからメタデータを削除する手順です。

  • 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、
* Javaを使用したWebP、BMP、GIF、TIFFおよびその他の画像
*/
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ファイルなどからのメタデータの削除をサポートできます。 ドキュメントからJavaメタデータAPIの詳細を調べることができます。

関連項目