PDF ファイル内の正規表現でテキストを置換する

導入

Aspose.PDF for .NET は、開発者が PDF ファイルを簡単に操作できるようにする素晴らしいツールです。その強力な機能の 1 つは、正規表現に基づいてテキストを検索し、それを置換する機能です。日付、電話番号、コードなどの特定のテキスト パターンを変更する必要がある PDF を扱ったことがあるなら、まさにこれがまさに探していたものです。このチュートリアルでは、PDF ファイルで正規表現を使用してテキストを置換するプロセスについて説明します。この機能をプロジェクトにスムーズに統合できるように、わかりやすい手順に分解します。

前提条件

コードに進む前に、すべてが設定されていることを確認しましょう。

  1. Aspose.PDF for .NET: Aspose.PDF for .NETの最新バージョンが必要です。ダウンロードできます。ここ.
  2. IDE: Visual Studio またはその他の .NET 互換の統合開発環境 (IDE)。
  3. .NET Framework: .NET Framework 4.0 以降がインストールされていることを確認してください。
  4. PDF ドキュメント: テキストを検索および置換するサンプル PDF ファイル。

すべて準備ができたら、開始する準備は完了です。

パッケージのインポート

最初に必要なのは、必要なパッケージをインポートすることです。これにより、Aspose.PDF から必要なすべてのクラスとメソッドにアクセスできるようになります。

using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;

これにより、PDF ドキュメントを操作し、ドキュメント内のテキスト フラグメントを処理できるようになります。

それでは、プロセスをステップごとに見ていきましょう。正規表現に基づいてテキストを置換するまでの流れを追ってみましょう。

ステップ1: PDFドキュメントを読み込む

まず、テキスト置換を実行するPDF文書を読み込む必要があります。これは、Document Aspose.PDF からのクラス。

string dataDir = "YOUR DOCUMENT DIRECTORY";
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionPage.pdf");

このステップでは、"YOUR DOCUMENT DIRECTORY"PDFファイルが保存されている実際のパスを入力します。このコードはPDFを開き、pdfDocumentオブジェクトは次の手順で操作します。

ステップ2: 正規表現を定義する

ドキュメントが読み込まれたら、次のステップは、興味のあるテキストパターンを検索する正規表現を定義することです。たとえば、「1999-2000」のような年の範囲を置き換えたい場合は、次の正規表現を使用できます。\d{4}-\d{4}.

TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); 

この行は、TextFragmentAbsorber任意の 4 桁の数字、ハイフン、さらに別の 4 桁の数字が検索されます。必要に応じて、特定のユースケースに合わせて正規表現を変更できます。

ステップ3: 正規表現検索オプションを有効にする

Aspose.PDFでは、テキストの検索方法を細かく調整できます。この場合、TextSearchOptionsクラス。

TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

このオプションを設定するとtrueでは、PDF 内での検索に正規表現を使用できるようになります。

ステップ4: 特定のページにアブソーバーを適用する

次に、TextFragmentAbsorberドキュメントの特定のページに適用します。この例では、最初のページに適用します。

pdfDocument.Pages[1].Accept(textFragmentAbsorber);

このメソッドは、ドキュメントの最初のページから正規表現に一致するすべてのテキスト フラグメントを抽出します。ドキュメント全体を検索する場合は、すべてのページをループすることができます。

ステップ5: テキストをループして置き換える

次は楽しい部分です。抽出されたテキスト フラグメントをループし、テキストを置き換え、フォント サイズ、フォント タイプ、色などのプロパティをカスタマイズします。

TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

foreach (TextFragment textFragment in textFragmentCollection)
{
    textFragment.Text = "New Phrase"; //新しいテキストに置き換えます
    textFragment.TextState.Font = FontRepository.FindFont("Verdana");
    textFragment.TextState.FontSize = 22;
    textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
    textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}

ここでは、正規表現に一致する各テキストフラグメントをループしています。一致するたびに、テキストは次のように置き換えられます。"New Phrase"また、フォントを「Verdana」にカスタマイズし、フォント サイズを 22 に設定し、テキストと背景の色を変更します。

ステップ6: 更新されたPDFドキュメントを保存する

すべての変更が完了したら、変更した PDF ドキュメントを保存します。

dataDir = dataDir + "ReplaceTextonRegularExpression_out.pdf";
pdfDocument.Save(dataDir);

これにより、すべてのテキスト置換を含む更新されたPDFが、新しいファイルに保存されます。ReplaceTextonRegularExpression_out.pdf.

ステップ7: 変更を確認する

最後に、すべてが機能したことを確認するために、コンソールにメッセージを出力します。

Console.WriteLine("\nText replaced successfully based on a regular expression.\nFile saved at " + dataDir);

このメッセージは、テキスト置換プロセスが成功したことを確認し、新しい PDF が保存された場所を表示します。

結論

Aspose.PDF for .NET を使用して、正規表現に基づいて PDF ファイル内のテキストを正常に置換できました。ドキュメント処理を自動化する場合でも、古い情報をクリーンアップする場合でも、この機能は非常に強力です。わずか数行のコードで、大規模なドキュメント全体で複雑なテキスト変更を数秒で行うことができます。

よくある質問

1 つのドキュメントで複数の正規表現を使用できますか?

はい、複数作成できますTextFragmentAbsorberそれぞれ異なる正規表現を持つオブジェクトを作成し、それをドキュメントに適用します。

Aspose.PDF for .NET は .NET Core と互換性がありますか?

はい、Aspose.PDF for .NET は .NET Framework と .NET Core の両方をサポートしています。

複数のページのテキストを一度に置き換えることはできますか?

もちろんです! 吸収剤を 1 ページに適用する代わりに、すべてのページをループしたり、ドキュメント全体に一度に適用したりすることもできます。

大文字と小文字を区別しないテキストを検索したい場合はどうすればよいでしょうか?

適切な正規表現フラグを使用するか、検索オプションを調整することで、大文字と小文字を区別しないように正規表現を変更できます。

PDF ファイル内の画像を置き換えることはできますか?

はい、Aspose.PDF for .NET は PDF ドキュメント内での画像の置き換えと操作もサポートしています。