Java を使用して PDF からメタデータを読み取る

PDF ファイル内のメタデータには、タイトル、作成者、作成日と変更日、キーワード、その他の関連データなど、ドキュメントに関する重要な詳細が含まれています。このメタデータを抽出すると、ドキュメント管理システムからデータ分析や自動化タスクまで、さまざまなアプリケーションに大きなメリットがもたらされます。この記事では、Java を使用して PDF からメタデータを読み取る プロセスについて説明します。ここでは、手順を段階的に説明し、Java を使用して PDF のメタデータを読み取る 方法を示すサンプル コードを示します。

Javaを使用してPDFからメタデータを読み取る手順

  1. GroupDocs.Metadata for Java を利用して PDF ファイルからメタデータを抽出できるように IDE を設定します
  2. PDF ファイル パスをコンストラクタの引数として使用して Metadata オブジェクトをインスタンス化します。
  3. 収集したメタデータ情報をチェックするためのルールを設定する
  4. Metadata.findProperties メソッドを使用するための条件を指定します
  5. 各プロパティを個別に反復処理する

Java を使用して PDF ファイルからメタデータを抽出すると、開発者はタイトル、著者、作成日と変更日、キーワードなどのドキュメント プロパティに関する貴重な情報を得ることができます。このデータは、ドキュメント管理システム、データ分析、自動化されたワークフローで重要な役割を果たします。Java がインストールされていれば、Windows、macOS、Linux で提供された手順に従うことができます。Java で PDF のメタデータを抽出するために追加のソフトウェアをインストールする必要はありません。推奨ライブラリを構成し、必要に応じてファイル パスを調整したら、次のコードをプロジェクトに統合するのは、複雑さや困難を伴うことなく簡単です。

Java を使用して PDF からメタデータを読み取るコード

import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.FileFormat;
import com.groupdocs.metadata.core.IReadOnlyList;
import com.groupdocs.metadata.core.MetadataProperty;
import com.groupdocs.metadata.core.MetadataPropertyType;
import com.groupdocs.metadata.licensing.License;
import com.groupdocs.metadata.search.FallsIntoCategorySpecification;
import com.groupdocs.metadata.search.OfTypeSpecification;
import com.groupdocs.metadata.search.Specification;
import com.groupdocs.metadata.tagging.Tags;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReadMetadataFromPDFUsingJava {
public static void main(String[] args) {
// Set License to avoid the limitations of Metadata library
License license = new License();
license.setLicense("GroupDocs.Metadata.lic");
Metadata metadata = new Metadata("input.pdf");
if (metadata.getFileFormat() != FileFormat.Unknown && !metadata.getDocumentInfo().isEncrypted()) {
System.out.println();
// Fetch all metadata properties that fall into a particular category
IReadOnlyList<MetadataProperty> properties = metadata.findProperties(new FallsIntoCategorySpecification(Tags.getContent()));
System.out.println("The metadata properties describing some characteristics of the file content: title, keywords, language, etc.");
for (MetadataProperty property : properties) {
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue()));
}
// Fetch all properties having a specific type and value
int year = Calendar.getInstance().get(Calendar.YEAR);
properties = metadata.findProperties(new OfTypeSpecification(MetadataPropertyType.DateTime).and(new ReadMetadataFromPDFUsingJava().new YearMatchSpecification(year)));
System.out.println("All datetime properties with the year value equal to the current year");
for (MetadataProperty property : properties) {
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue()));
}
// Fetch all properties whose names match the specified regex
Pattern pattern = Pattern.compile("^author|company|(.+date.*)$", Pattern.CASE_INSENSITIVE);
properties = metadata.findProperties(new ReadMetadataFromPDFUsingJava().new RegexSpecification(pattern));
System.out.println(String.format("All properties whose names match the following regex: %s", pattern.pattern()));
for (MetadataProperty property : properties) {
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue()));
}
}
}
// Define your own specifications to filter metadata properties
public class YearMatchSpecification extends Specification {
public YearMatchSpecification(int year) {
setValue(year);
}
public final int getValue() {
return auto_Value;
}
private void setValue(int value) {
auto_Value = value;
}
private int auto_Value;
public boolean isSatisfiedBy(MetadataProperty candidate) {
Date date = candidate.getValue().toClass(Date.class);
if (date != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return getValue() == calendar.get(Calendar.YEAR);
}
return false;
}
}
public class RegexSpecification extends Specification {
private Pattern pattern;
public RegexSpecification(Pattern pattern) {
this.pattern = pattern;
}
@Override
public boolean isSatisfiedBy(MetadataProperty metadataProperty) {
Matcher matcher = pattern.matcher(metadataProperty.getName());
return matcher.find();
}
}
}

要約すると、この記事では、Java で PDF のメタデータを取得する方法についての詳細なガイドを提供しました。メタデータ ライブラリを使用すると、開発者は PDF ドキュメントからドキュメントのタイトル、作成者の詳細、作成日と変更日、キーワードなどの重要な情報を効果的に取得できます。Java でのメタデータ抽出テクニックを習得すると、開発者はドキュメント管理、データ分析、自動化のための堅牢なアプリケーションを作成できます。さまざまな PDF ファイルを試して、追加のメタデータ プロパティを調べ、Java アプリケーションでのメタデータ抽出機能をさらに強化することをお勧めします。

以前の会話では、Java を使用して PPTX ファイルからメタデータを抽出する詳細なチュートリアルを紹介しました。この主題をより深く理解するには、Java を使用して PPTX からメタデータを読み取る 方法に関する包括的なガイドを参照することをお勧めします。

 日本語