さまざまなケースで、PDFドキュメント内の特定のテキストを見つけて置き換える必要がある場合があります。ただし、各オカレンスを手動で検索および更新すると、余分な時間と労力がかかる場合があります。このような場合、検索と置換のオプションを使用すると、作業が楽になります。この記事では、Javaを使用してPDFドキュメント内のテキストを検索および置換する方法を学習します。
PDF内のテキストを検索して置換するJavaAPI-無料ダウンロード
Aspose.PDF for Javaは、Javaアプリケーション内からPDFファイルを生成および操作するために設計されています。 APIは、テキストの検索や置換など、基本的なPDF操作機能と高度なPDF操作機能を幅広く提供します。 APIをダウンロードするか、次のMaven構成を使用してインストールできます。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>21.1</version>
</dependency>
Javaを使用してPDF内のテキストを検索および置換
PDF内の特定のテキストを置き換えるには、最初に検索文字列に一致するすべてのテキストフラグメントを取得します。それらを入手したら、各フラグメントを更新されたテキストで1つずつ置き換えるだけです。
以下は、Javaを使用してPDFファイル内のテキストを検索して置換する手順です。
- Documentクラスを使用してPDFファイルをロードします。
- TextFragmentAbsorberクラスのオブジェクトを作成し、検索して置換するテキストで初期化します。
- Document.getPages().accept(TextFragmentAbsorber)メソッドを使用して、PDFのページのアブソーバーを受け入れます。
- TextFragmentAbsorber.getTextFragments()によって返されたすべてのテキストをTextFragmentCollectionオブジェクトに取得します。
- TextFragmentCollectionオブジェクトの各TextFragmentをループし、TextFragment.setText(String)メソッドを使用してテキストを置き換えます。
- Document.save(String)メソッドを使用して、更新されたPDFファイルを保存します。
次のコードサンプルは、PDF内のテキストを検索して置換する方法を示しています。
// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.Pdf-for-Javaにアクセスしてください。
// ドキュメントを開く
Document pdfDocument = new Document("source.pdf");
// TextAbsorberオブジェクトを作成して、入力検索フレーズのすべてのインスタンスを検索します
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample");
// ドキュメントのすべてのページのアブソーバーを受け入れます
pdfDocument.getPages().accept(textFragmentAbsorber);
// 抽出されたテキストフラグメントをコレクションに入れます
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();
// フラグメントをループします
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
// テキストやその他のプロパティを更新する
textFragment.setText("New Pharase");
textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
textFragment.getTextState().setFontSize(22);
textFragment.getTextState().setForegroundColor(Color.getBlue());
textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// 更新されたPDFファイルを保存します
pdfDocument.save("Updated_Text.pdf");
PDFの特定のページのテキストを検索して置換する
PDF全体でテキストを検索して置換する代わりに、出現するテキストを置換する単一のページを指定できます。この場合、ページインデックスを指定するだけで、特定のページのTextFragmentAbsorberを受け入れることになります。
以下は、JavaでPDFの特定のページのテキストを検索して置換する手順です。
- Documentクラスを使用してPDFファイルをロードします。
- TextFragmentAbsorberクラスのオブジェクトを作成し、検索して置換するテキストで初期化します。
- Document.getPages().get_Item(Int pageIndex).accept(TextFragmentAbsorber)メソッドを使用して、PDF内の特定のページのアブソーバーを受け入れます。
- TextFragmentAbsorber.getTextFragments()によって返されたテキストのすべての出現箇所をTextFragmentCollectionオブジェクトに取得します。
- TextFragmentCollectionオブジェクトの各TextFragmentをループし、TextFragment.setText(String)メソッドを使用してテキストを置き換えます。
- Document.save(String)メソッドを使用して、更新されたPDFファイルを保存します。
次のコードサンプルは、Javaを使用してPDFの特定のページのテキストを検索して置換する方法を示しています。
// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.Pdf-for-Javaにアクセスしてください。
// ドキュメントを開く
Document pdfDocument = new Document("source.pdf");
// TextAbsorberオブジェクトを作成して、入力検索フレーズのすべてのインスタンスを検索します
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample");
// ドキュメントの最初のページのアブソーバーを受け入れます
pdfDocument.getPages().get_Item(0).accept(textFragmentAbsorber);
// 抽出されたテキストフラグメントをコレクションに入れます
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();
// フラグメントをループします
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
// テキストやその他のプロパティを更新する
textFragment.setText("New Pharase");
textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
textFragment.getTextState().setFontSize(22);
textFragment.getTextState().setForegroundColor(Color.getBlue());
textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// 更新されたPDFファイルを保存します
pdfDocument.save("Updated_Text.pdf");
PDFの正規表現を使用してテキストを検索および置換
電子メール、SSNなどの特定のパターンに一致するテキストを検索するための正規表現を指定することもできます。以下は、Javaを使用してPDFのテキストを検索および置換するための正規表現を定義および使用する手順です。
- Documentクラスを使用してPDFファイルをロードします。
- TextFragmentAbsorberクラスのオブジェクトを作成し、使用する正規表現で初期化します。
- TextSearchOptionsクラスのオブジェクトを作成し、それをtrueで初期化して、正規表現ベースの検索を有効にします。
- TextFragmentAbsorber.setTextSearchOptions(TextSearchOptions)メソッドを使用してオプションを設定します。
- Document.getPages().accept(TextFragmentAbsorber)メソッドを使用して、PDFのページのアブソーバーを受け入れます。
- TextFragmentAbsorber.getTextFragments()によって返されたテキストの見つかったすべてのオカレンスをTextFragmentCollectionオブジェクトに取得します。
- TextFragmentCollectionオブジェクトの各TextFragmentをループし、TextFragment.setText(String)メソッドを使用してテキストを置き換えます。
- Document.save(String)メソッドを使用して、更新されたPDFファイルを保存します。
次のコードサンプルは、正規表現を使用してPDF内のテキストを検索および置換する方法を示しています。
// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.Pdf-for-Javaにアクセスしてください。
// ドキュメントを開く
Document pdfDocument = new Document("input.pdf");
// TextAbsorberオブジェクトを作成して、入力検索フレーズのすべてのインスタンスを検索します
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // like 1999-2000
// 正規表現の使用を有効にするためのテキスト検索オプションを設定します
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.setTextSearchOptions(textSearchOptions);
// ドキュメントのすべてのページのアブソーバーを受け入れます
pdfDocument.getPages().accept(textFragmentAbsorber);
// 抽出されたテキストフラグメントをコレクションに入れます
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();
// フラグメントをループします
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
// テキストやその他のプロパティを更新する
textFragment.setText("New Pharase");
textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
textFragment.getTextState().setFontSize(22);
textFragment.getTextState().setForegroundColor(Color.getBlue());
textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// 更新されたPDFファイルを保存します
pdfDocument.save("Updated_Text.pdf");
無料のAPIライセンスを取得する
評価制限なしで無料でAPIを試すことができます。 無料の一時ライセンスを取得今すぐ。
結論
この記事では、Javaを使用してPDF内のテキストを検索および置換する方法を学習しました。さらに、正規表現を使用して、特定のパターンに従ってテキストを検索および置換する方法を見てきました。 ドキュメントを使用して、JavaPDFAPIの詳細を調べることができます。