搜尋並獲取全部文本

介紹

您是否曾經需要從 PDF 中提取特定文本但發現它很棘手? PDF 有時感覺像是上鎖的容器,導致您很難獲得所需的資訊。但好消息是:使用 Aspose.PDF for .NET,您可以輕鬆地從任何 PDF 中搜尋和檢索文字。這個功能強大的程式庫提供了您在 .NET 應用程式中處理 PDF 所需的一切,使文字擷取變得輕而易舉。在本教學中,我們將引導您完成使用 Aspose.PDF for .NET 從 PDF 檔案中搜尋和提取文字的過程。無論您是要建立文字分析工具還是只需要從 PDF 報告中自動提取數據,您都來對地方了!

先決條件

在我們進入程式碼之前,讓我們確保您已完成所有設定:

  1. Aspose.PDF for .NET:您需要下載並安裝 Aspose.PDF for .NET。您可以從下載頁面取得它這裡.
  2. .NET 環境:確保您的開發電腦上設定了 .NET Framework 或 .NET Core。
  3. 基本 C## 知識:建議熟悉 C# 並使用 .NET 專案。
  4. PDF 文件:我們將從中提取文本的範例 PDF 文件。在此範例中,我們將使用SearchAndGetTextFromAll.pdf.

導入包

在編寫任何程式碼之前,您需要將必要的命名空間匯入到專案中才能使用 Aspose.PDF。

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

這些命名空間提供對 PDF 文件物件模型的訪問,並允許我們操作文件中的文字。

讓我們將這個過程分解為簡單的步驟,以便您可以輕鬆遵循。

步驟1:設定文檔目錄

首先,您需要指定 PDF 所在目錄的路徑。這有助於應用程式找到您要從中提取文字的檔案。

//文檔目錄的路徑。
string dataDir = "YOUR DOCUMENT DIRECTORY";
  • dataDir變數應該指向你的目錄SearchAndGetTextFromAll.pdf文件已儲存。
  • 代替"YOUR DOCUMENT DIRECTORY"與您機器上的實際路徑。

第 2 步:開啟 PDF 文檔

接下來,我們將使用 Aspose.PDF 開啟 PDF 文檔Document目的。

//開啟文件
Document pdfDocument = new Document(dataDir + "SearchAndGetTextFromAll.pdf");
  • 我們建立一個新的實例Document類別透過傳遞 PDF 的完整文件路徑。
  • 這會將 PDF 載入到記憶體中,準備好進行處理。

第 3 步:建立文字吸收器

TextFragmentAbsorber物件用於搜尋 PDF 中的特定文字。在本例中,我們將尋找單字「text」。

//建立 TextAbsorber 物件以尋找輸入搜尋短語的所有實例
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");
  • TextFragmentAbsorber用字串初始化"text"。這意味著它將在 PDF 文件中查找任何出現的“文本”一詞。

第 4 步:接受所有頁面的吸收器

現在,我們將指示 PDF 文件接受吸收器並在其所有頁面上搜尋文字。

//接受所有頁面的吸收器
pdfDocument.Pages.Accept(textFragmentAbsorber);
  • Accept方法應用於文檔的頁面。這將在所有頁面中搜尋指定文字。

步驟5:提取文字片段

一旦吸收器掃描了文檔,我們就可以檢索提取的文字片段。

//取得擷取的文字片段
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
  • TextFragments的財產TextFragmentAbsorber傳回與搜尋字詞相符的所有文字片段的集合。

第 6 步:循環文字片段

現在我們已經收集了文字片段,我們將循環它們並提取詳細資訊。

//循環遍歷片段
foreach (TextFragment textFragment in textFragmentCollection)
{
    Console.WriteLine("Text : {0} ", textFragment.Text);
    Console.WriteLine("Position : {0} ", textFragment.Position);
    Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
    Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
    Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
    Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
    Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
    Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
    Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
    Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}
  • foreach循環遍歷每個TextFragment在集合中。
  • 我們列印每個片段的各種屬性,例如實際文字、其在頁面上的位置、字體詳細資訊和字體大小。
  • XIndentYIndent屬性給出了 PDF 中文本片段的精確座標。

結論

現在你就擁有了!只需幾行程式碼,我們就可以使用 Aspose.PDF for .NET 成功地從 PDF 中搜尋並提取文字。 Aspose.PDF 的靈活性可讓您以多種方式操作 PDF,這使其成為在 .NET 環境中需要強大 PDF 解決方案的開發人員的絕佳選擇。您可以輕鬆擴展此範例以搜尋其他單字、提取更多詳細信息,甚至根據您的需求操作 PDF 內容。希望本指南為您提供了一種清晰、直接的 PDF 處理方法。繼續嘗試使用您自己的 PDF!

常見問題解答

我可以一次搜尋多個單字嗎?

是的,您可以修改TextFragmentAbsorber透過相應調整搜尋字串來搜尋多個短語。

如果文字跨越多行怎麼辦?

即使文字跨越多行,Aspose.PDF 仍將識別並擷取文字。您可以單獨處理這些片段。

如何將提取的文字儲存到文件中?

您可以使用標準 C# 文件 I/O 操作將提取的文字寫入文件,例如StreamWriter.

Aspose.PDF是否支援從掃描的PDF中提取文字?

Aspose.PDF 不支援 OCR。對於掃描的 PDF,您需要 OCR 工具來識別文字。

如何處理加密的 PDF?

如果您的 PDF 受密碼保護,您可以透過在載入文件時提供密碼來使用 Aspose.PDF 將其解鎖。